我有以下文件
file1_moduleA.hpp
file1_moduleA.cpp
共享文件.hpp
file1_moduleB.cpp
//sharedFile.hpp
extern CustomClass *doSomething(CustomClass *var1, const char *var2);
extern CustomClass *doSomethingElse(const char *var1);
template <class MYCLASS_A>
void myFunction(CustomClass *var1, const char* var2){
assert(somthing);
if (condition){
new (MYCLASS_A);
}
}
//file1_moduleA.cpp
#include "sharedFile.hpp"
// Contains the definitions of doSomething and doSomethingElse among others
//file1_moduleA.hpp
// Other declarations
//file1_moduleB.cpp
#include"sharedFile.hpp"
//...SNIPPETS OF CODE
void someFunction(CustomClass* var1){
doSomething(var1, "FOO");
}
//...
以下是在一个 Visual Studio 项目中,项目 A:file1_moduleA.hpp、file1_moduleA.cpp 和 sharedFile.hpp
以下是在另一个VS项目,项目B:file1_moduleB.cpp,file1_moduleB.hpp
项目 A 编译和链接完美,而项目 B 编译但在file1_moduleB.cpp 中的 someFunction处为CustomClass *doSomething(CustomClass *var1, const char *var2)提供未解析的符号
我尝试过定义有和没有外部的函数;尝试在 file1_moduleA.hpp 中为模板使用单独的文件;尝试在 VS 中引入 ProjectB 和 ProjectA 之间的依赖关系,但似乎没有任何效果。我不确定为什么在链接期间找不到定义。但是,正在创建 ProjectA.lib。
在这方面的任何帮助将不胜感激。