だから私は以下に示すラッパーを持っています:
Wrapper.h
#pragma once
#include "Engine.h"
namespace Wrapper
{
public ref class EngineWrapper
{
public:
EngineWrapper();
virtual ~EngineWrapper();
protected:
!EngineWrapper();
private:
CEngine *m_engine;
};
}
ラッパー.cpp
#include "stdafx.h"
#include "Wrapper.h"
using namespace Wrapper;
EngineWrapper::EngineWrapper()
{
m_engine = new CEngine();
}
EngineWrapper::~EngineWrapper()
{
if (m_engine)
{
delete m_engine;
m_engine = NULL;
}
}
EngineWrapper::!EngineWrapper()
{
if (m_engine)
{
delete m_engine;
m_engine = NULL;
}
}
これは私のネイティブ エンジン コードの一部です (別のプロジェクトで):
エンジン.h
class CEngine
{
public:
CEngine();
virtual ~CEngine();
// other stuff
}
エンジン.cpp
CEngine::CEngine()
{
// do stuff
}
CEngine::~CEngine()
{
// do stuff
}
My Wrapper プロジェクトは、C++/CLI プロジェクトを使用してコンパイルされ/clr
たものである My Engine プロジェクトは、.dll、.lib、および .exp を生成するネイティブ C++ プロジェクトです (このプロジェクトのビルド時の出力を見てから)
Wrapper プロジェクトでは、ネイティブ .lib の場所をリンカー入力に追加しました。
私の問題: 次のエラーが表示されます。
Error 126 error LNK2028: unresolved token (0A000380) "public: __thiscall
CEngine::CEngine(void)" (??0CEngine@@$$FQAE@XZ) referenced in function "public:
__clrcall Wrapper::EngineWrapper::EngineWrapper(void)" (
0EngineWrapper@Wrapper@@$$FQ$AAM@XZ) C:\..\..\Wrapper.obj Wrapper
Error 127 error LNK2019: unresolved external symbol "public: __thiscall
CEngine::CEngine(void)" (??0CEngine@@$$FQAE@XZ) referenced in function "public:
__clrcall Wrapper::EngineWrapper::EngineWrapper(void)" (
0EngineWrapper@Wrapper@@$$FQ$AAM@XZ) C:\..\..\Wrapper.obj Wrapper
ライブラリを正しく見つけていると思いますが、ネイティブ ctor を認識しないのはなぜですか?