如何在三个不同的.cpp文件中使用功能

如何解决如何在三个不同的.cpp文件中使用功能

| 我有三个.cpp文件,它们分别名为MeshLoader.cpp,DynamicXMesh.cpp和StaticXMesh.cpp 我在名为FindTexturePath的MeshLoader.cpp文件中有一个函数,我想在DynamicXMesh.cpp和StaticXMesh.cpp文件中调用并使用它。 我在启动XMesh文件中包含了MeshLoader.cpp(#include \“ MeshLoader.cpp \”)文件,当然会收到一条错误消息,指出功能已定义... 我也尝试过一次使用编译指示和ifndef ...:
//This is \"MeshLoader.cpp\"
pragma once

#ifndef MLOAD
#define MLOAD
  char* FindTexturePath( char* TexturePath,LPSTR FileNameToCombine){
      ...
      ...
      ...
  }
#endif
/////
//This is StaticXMesh.cpp
#include \"MeshLoader.cpp\"
...
...
...
this->StatXMeshTexturePath = FindTexturePath(StatXMeshTexturePath,d3dxMaterials[i].pTextureFilename);
...
...
///// 和对DynamicXMesh.cpp的相同调用 希望我能解释得足够清楚...谢谢您的宝贵时间...     

解决方法

        您需要创建MeshLoader.h,并在其中放入类似内容
#ifndef INCLUDED_MESH_LOADER_H
#define INCLUDED_MESH_LOADER_H

char* FindTexturePath( char* TexturePath,LPSTR FileNameToCombine);

#endif
并将其包含在其他cpp文件中。每个cpp文件仅需要FindTexturePath的声明即可进行编译。因此,每当需要将cpp中的功能公开给其他cpp文件时,请创建一个包含功能声明的.h文件。     ,        首选方法是将函数声明放入.h文件中,并使链接程序将所有.cpp文件组合为一个可执行文件。 如果您坚持以非标准的方式进行操作,则可以通过使函数
inline
或ѭ4make进行工作。     ,        将函数原型放在头文件(MeshLoader.h)中,并在需要使用该函数的所有位置包含该文件。     ,        正如其他用户所述,您要将声明放置在头文件(
.h
.hpp
)中。 有时您可能希望在头文件中也有一个定义。此时,您将创建一个静态函数定义:
static char* FindTexturePath(...) { .. }
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?