【发布时间】:2014-11-16 07:21:22
【问题描述】:
所以我有一个如下所示的包装器:
包装器.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
}
Engine.cpp
CEngine::CEngine()
{
// do stuff
}
CEngine::~CEngine()
{
// do stuff
}
我的 Wrapper 项目是一个使用 /clr 编译的 C++/CLI 项目
我的引擎项目是一个原生 C++ 项目,它生成一个 .dll、.lib 和 .exp(通过查看此项目构建时的输出)
对于 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?
【问题讨论】:
标签: c++-cli wrapper linker-errors