Ligação de erro de link do C ++ gerenciado para não gerenciado apesar de vincular ao arquivo .lib com símbolos exportados
Apesar de seguir vários posts sobre como usar e vincular a código C ++ não gerenciado de uma dll wrapper C ++ / CLI, não posso resolver esses problemas de link.
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)
Eu tenho um nativo C ++ dll não gerenciado com uma classe simples, exportando / importando símbolos em conformidade
// MyClass.h
#ifdef _EXPORTING
#define DLL_PUBLIC __declspec(dllexport)
#else
#define DLL_PUBLIC __declspec(dllimport)
#endif
class DLL_PUBLIC MyClass { . . . };
E eu posso ver o arquivo .dll e .lib linker sendo gerado após a construção.
Então eu tenho o projeto de wrapper C ++ / CLI gerenciado (também uma dll), que vincula ao MyClass.lib na configuração Linker-> Input-> Additional Dependencies. Também incluiu o arquivo .h do MyClass no projeto wrapper, e posso ver que o sln pode ver o arquivo MyClass.h.
// MyClassAdaptor.h
#include "MyClass.h"
namespace WrapperLayer
{
public ref class MyClassAdaptor
{
. . .
private:
MyClass* _myclass;
};
}
O que pode estar faltando?