エラー LNK2019: unresolved external symbol problem が発生しました。
2 つのファイルがあり、それらを共有の場所に移動して、2 つの異なるプロジェクトがクラスを使用できるようにします。他にもこのようなクラスがあります。
問題は、プロジェクトの1つのメインからクラスを呼び出すと、取得することです
error LNK2019: unresolved external symbol "public: __thiscall CProcessCommandLine::~CProcessCommandLine(void)" (??1CProcessCommandLine@@QAE@XZ) referenced in function _main
error LNK2019: unresolved external symbol "public: bool __thiscall CProcessCommandLine::Wait(void)const " (?Wait@CProcessCommandLine@@QBE_NXZ) referenced in function _main
error LNK2019: unresolved external symbol "public: class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > const & __thiscall CProcessCommandLine::getTargetNamesVect(void)" (?getTargetNamesVect@CProcessCommandLine@@QAEABV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@XZ) referenced in function _main
error LNK2019: unresolved external symbol "public: __thiscall CProcessCommandLine::CProcessCommandLine(void)" (??0CProcessCommandLine@@QAE@XZ) referenced in function _main
ヘッダー ファイルを開いて関数の 1 つを右クリックし、定義に移動すると、.cpp の定義に移動しません。.cpp の関数を右クリックして定義に移動すると、「シンボルが定義されていません」と表示されます。
なぜこれが起こっているのか誰にも分かりますか?.h と .cpp の両方が同じ場所にあり、その場所はプロジェクトの追加のインクルード ディレクトリにあります。
編集:
次のコードは、このフォルダー内の他のファイルに存在します。
#ifdef PROJ1
#include "class1.h"
#elif PROJ2
#include "class2.h"
#endif
私は前にこれらのことを見たことがありません。それらはコードで使用されますが、使用されるプロジェクトに応じて正しいヘッダーを含めるためだけに使用されます。上記は、このフォルダー内の他のクラスの .cpp にあります。なのでここに入れました。しかし、他のクラスでは、それが属していないプロジェクトはグレー表示されています。.h に入れると、正しいヘッダーがグレー表示されます。しかし、何らかの理由で、この .cpp はプロジェクトの一部として認識されていません。