アプリケーションに対して問題なくビルドおよびリンクしている多数の DLL がありますが、この静的ライブラリが問題を引き起こしています。
そこに存在するのは1つのクラスだけです。クラスは__declspec(dllexport)
、lib をビルドするとき、および__declspec(dllimport)
アプリケーションにクラスのヘッダーを含めるときに で宣言されます。
MyClass のインスタンスを使用してアプリケーションをビルドしようとすると、次のようになります。
error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall MyClass::~MyClass(void)"
error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall MyClass::MyClass(void)"
また、MyClass へのポインターを使用してアプリケーションをビルドしようとすると、同じ未解決の外部情報に加えて、次の 2 つの追加の警告が表示されます。
warning LNK4217: locally defined symbol ??0MyClass@@QAE@XZ (public: __thiscall MyClass::MyClass(void)) imported in function _main
warning LNK4217: locally defined symbol ??1MyClass@@UAE@XZ (public virtual __thiscall MyClass::~MyClass(void))
Web で LNK4217 を検索すると、/M[TD]d?
cl.exe
スイッチの誤った使用法が示唆されます。Visual Studio ソリューションを再作成し、ソースをドラッグして、正しくプロビジョニングされていることを確認しました。参考までに、Lib とアプリの両方に /MDd があります。