1

だから私は以下に示すラッパーを持っています:

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 を認識しないのはなぜですか?

4

1 に答える 1

3

CEngine クラスをネイティブ C++ プロジェクトにエクスポートします。詳細については、このURLを確認してください。

于 2013-10-09T20:52:53.777 に答える