如何在三个不同的.cpp文件中使用函数
How to use a function in three different .cpp files
我有三个.cpp文件,它们分别命名为MeshLoader.cpp、DynamicXMesh.cpp和StaticXMesh.cpp
我在MeshLoader.cpp文件中有一个名为FindTexturePath的函数,我想在DynamicXMesh.cpp和StaticXMesh.cpp文件中调用并使用它。
我在启动XMesh文件中包含了MeshLoader.cpp(#include"MeshLoader.cpp")文件,当然会收到一个错误,说函数已经定义。。。
此外,我还尝试使用pragma一次和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文件中,并让链接器将所有.cpp文件合并为一个可执行文件。
如果您坚持以非标准的方式执行,则可以通过使函数inline
或static
发挥作用。
将函数原型放在一个头文件(MeshLoader.h)中,并在需要使用该函数的任何地方包含该文件。
正如其他用户所说,您希望将声明放入标头(.h
或.hpp
)文件中。
有时,您可能希望在头文件中也有定义。此时,您将进行一个静态函数定义:static char* FindTexturePath(...) { .. }
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 命名空间中具有.h和.cpp文件的类
- 为什么我的主文件.cpp不打印头文件中的任何内容
- 生成文件错误 - 找不到文件 - *.cpp
- 如何在文件.cpp gtkmm中声明小部件
- 没有实现文件(.cpp)的派生类
- 如何使用"CMakeLists.txt"中的add_library将整个文件(.cpp,.h等)包含在目录中
- 如何在Linux / Windows操作系统上使用文件*.cpp一步编译下面的代码
- 关于 Linux .so 文件无法链接到主文件.cpp文件
- 文件.cpp从Windows到Linux
- Ubuntu C++ 编译器错误: g++: 错误: 文件.cpp: 没有这样的文件或目录
- 如何将文件.cpp编译为本机编译
- 使用模板类时,似乎无法包含除 main 以外的任何 cpp 文件.cpp
- 无法编译C++文件.cpp。C++98模式
- 为什么C++头文件不需要包含实现文件 (.cpp)
- 如何访问位于独立文件(.cpp)中的非成员函数
- 如何在Visual Studio Code中通过键盘快捷键切换头文件/cpp文件
- 如何将数据从stringstream写入文件(CPP)
- 为什么filestream不把空白写入文件cpp ?