我有以下文件
file1_moduleA.hpp
file1_moduleA.cpp
sharedFile.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)提供了一个未解析的符号/强>
我尝试使用和不使用extern 定义函数;尝试在file1_moduleA.hpp中为模板使用单独的文件;尝试在VS中引发ProjectB和ProjectA之间的依赖关系,但似乎没有任何效果。我不确定为什么在链接期间找不到定义。但是,正在创建ProjectA.lib。
在这方面的任何帮助将不胜感激。
答案 0 :(得分:0)
如果您使用的是visual studio,并且这些是不同的项目,那么使项目B依赖于项目A.
右键单击解决方案。 转到项目依赖项。
选择项目B.
单击项目A(使项目B依赖于项目A)
重建。
答案 1 :(得分:0)
您是否在项目B中包含共享文件?