次のファイルがあります
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");
}
//...
以下は、1 つの 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 は作成中です。
この点で何か助けていただければ幸いです。