静的ライブラリであり、サードパーティのライブラリLib3を使用するプロジェクトLibAがあります。Project LibA は問題なくビルドおよび実行されます。
実行可能ファイルであり、LibA を使用する別のプロジェクト Exe があります。これはコンパイルされますが、リンカは LibA でのみ使用される Lib3 の関数を検出しません。
私が試したこと:
- プロジェクトExeのライブラリディレクトリパスにLib3の場所を追加します(Lib3がLibAで参照されるのと同じ方法です)
- リンカーの追加ライブラリ ディレクトリに Lib3 の場所を追加する
- Lib3 *.lib ファイルをプロジェクト LibA の出力フォルダーにコピーします (したがって、LibA *.lib ファイルが含まれます)。
私が何をしようとしても、私はまだ得LNK2019: Unresolved external symbol
ます。LibA で実際に Lib3 を呼び出すコードを削除した場合にのみ、プロジェクト Exe を適切にコンパイルおよびリンクできます。
静的ライブラリの依存関係を正しく処理するには?
編集:明確にするためのいくつかのコード:
LibA には LibA.h と LibA.cpp が含まれています。
LibA.h:
class LibA {
void doSomething();
}
libA.cpp:
#include "LibA.h"
#include "Lib3.h"
void LibA::doSomething() {
//call stuff in Lib3.h
}
Exe.cpp:
#include "LibA.h"
int _tmain(int argc, _TCHAR* argv[])
{
LibA a = new LibA();
a.doSomething();
}