如何解决如何在三个不同的.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(...) { .. }