0

次のファイルがあります

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 は作成中です。

この点で何か助けていただければ幸いです。

4

2 に答える 2

0

Visual Studioを使用していて、これらが異なるプロジェクトである場合は、プロジェクトBをプロジェクトAに依存させます。

ソリューションを右クリックします。プロジェクトの依存関係に移動します。

プロジェクトBを選択します。

プロジェクトAをクリックします(プロジェクトBをプロジェクトAに依存させます)

再構築します。

于 2013-01-09T03:40:46.897 に答える
0

プロジェクトBに共有ファイルを含めましたか?

于 2013-01-09T12:21:42.217 に答える