test.dll などのプロジェクト (dll を作成する) がありますが、クラスのコンストラクターとデストラクタ (TestClass など) を dll にエクスポートしていません。これは、TestClass のオブジェクトを作成および破棄するために呼び出されるはずのファクトリ関数がいくつかあるためです。この設計は、test.dll から TestClass のオブジェクトを使用しようとして作成したスタンドアロンの例では完全に正常に機能します。
ただし、この test.dll (または、Visual Studio を使用しているため、私の場合は .lib) を製品モジュールのプロジェクトにリンクすると、TestClass で見つからないコンストラクターとデストラクタを指す奇妙なリンク エラーが発生します。私は、new / delete を呼び出したり、プロジェクト内のどこにも TestClass のスタック インスタンスを作成したりしないことを知っています。製品モジュールは、C#/CLR/CLI と C++ を使用していると思います。回避する唯一の方法は、TestClass のコンストラクターとデストラクターをエクスポートすることです。これは設計上望ましくありません。
この状況は誰にでもなじみがありますか?何が問題なのか指摘できますか?
これは私が得るエラーです:
Error 5264 error LNK2028: unresolved token (0A000BA3) "public: virtual __thiscall BE::TestClass::~TestClass(void)" (??1TestClass@BE@@$$FUAE@XZ) referenced in function "public: virtual void * __thiscall BE::TestClass::`vector deleting destructor'(unsigned int)" (??_ETestClass@BE@@$$FUAEPAXI@Z) AMBestDetailBridge.obj BEBase
Error 5373 error LNK2001: unresolved external symbol "public: virtual __thiscall BE::TestClass::~TestClass(void)" (??1TestClass@BE@@$$FUAE@XZ) AMBestDetailBridge.obj BEBase
ありがとう!