1

C ++ /CLIラッパーdllからのアンマネージC++コードの使用とリンクに関するさまざまな投稿をフォローしていますが、これらのリンクの問題を解決できません。

1>MyClassAdapter.obj : error LNK2028: unresolved token (0A00000A) "public: __thiscall MyClass::~MyClass(void)" (??1MyClass@@$$FQAE@XZ) referenced in function "public: void * __thiscall MyClass::`scalar deleting destructor'(unsigned int)" (??_GMyClass@@$$FQAEPAXI@Z)
1>MyClassAdapter.obj : error LNK2028: unresolved token (0A00000B) "public: __thiscall MyClass::MyClass(void)" (??0MyClass@@$$FQAE@XZ) referenced in function "public: __clrcall WrapperLayer::MyClassAdaptor::MyClassAdaptor(void)" (??0MyClassAdaptor@WrapperLayer@@$$FQ$AAM@XZ)
1>MyClassAdapter.obj : error LNK2019: unresolved external symbol "public: __thiscall MyClass::MyClass(void)" (??0MyClass@@$$FQAE@XZ) referenced in function "public: __clrcall WrapperLayer::MyClassAdaptor::MyClassAdaptor(void)" (??0MyClassAdaptor@WrapperLayer@@$$FQ$AAM@XZ)
1>MyClassAdapter.obj : error LNK2019: unresolved external symbol "public: __thiscall MyClass::~MyClass(void)" (??1MyClass@@$$FQAE@XZ) referenced in function "public: void * __thiscall MyClass::`scalar deleting destructor'(unsigned int)" (??_GMyClass@@$$FQAEPAXI@Z)

単純なクラスを持つアンマネージネイティブC++dllがあり、それに応じてシンボルをエクスポート/インポートします

// MyClass.h
#ifdef _EXPORTING
   #define DLL_PUBLIC __declspec(dllexport)
#else
   #define DLL_PUBLIC __declspec(dllimport)
#endif

class DLL_PUBLIC MyClass { . . . };

そして、ビルド後に.dllと.libリンカーファイルが生成されているのを見ることができます。

次に、マネージC ++ / CLIラッパープロジェクト(これもdll)があります。これは、[リンカー]->[入力]->[追加の依存関係]設定でMyClass.libにリンクしています。MyClassの.hファイルもラッパープロジェクトに含めました。slnがMyClass.hファイルを見ることができます。

// MyClassAdaptor.h

#include "MyClass.h"

namespace WrapperLayer
{
    public ref class MyClassAdaptor 
    { 
      . . . 
    private:
        MyClass* _myclass;  
    }; 
}

何が欠けている可能性がありますか?

4

1 に答える 1

1

いくつかのポイント:

  • DLLにDependencyWalkerを使用して、それらのシンボルが実際にDLLにあるかどうかを確認します。
  • 正しいlibファイルを使用していることを確認してください。32ビットLIBは64ビットビルドには使用できません。
  • クラスのビルドに使用される.CPPファイルが実際にアンマネージファイルである(またはDLL自体が全体としてアンマネージされている)ことを確認します。
于 2012-07-18T07:50:35.227 に答える