【发布时间】:2011-04-27 03:52:51
【问题描述】:
我正在尝试使用托管 C++ 包装非托管 C++ DLL,但我不断收到链接错误。
即使我在项目中包含了 library.lib 并包含了正确的头文件。
这是托管类:
#pragma once
#include "..\Terminal\Terminal.h"
public ref class ManagedTerminal
{
private:
Terminal * m_unTerminal;
public:
ManagedTerminal(void)
{
m_unTerminal = new Terminal();
}
};
这是非托管类:
#include "..\Core1.h"
#include "..\Core2.h"
__declspec(dllexport) class Terminal
{
private:
CoreObj m_core;
public:
Terminal();
void Init(char* path, char* filename);
void Start();
void Stop();
void Run();
Array<Report> GetSnapshot();
~Terminal(void);
};
我得到的错误是:
错误 5 错误 LNK2028: 未解析的令牌 (0A0000B3) "public: __thiscall Terminal::Terminal(void)" (??0Terminal@@$$FQAE@XZ) 在函数 "public: __clrcall ManagedTerminal::ManagedTerminal(void) 中引用)" (??0ManagedTerminal@@$$FQ$AAM@XZ) ManagedTerminal.obj TerminalWrapper
错误 6 错误 LNK2019:未解析的外部符号“public: __thiscall Terminal::Terminal(void)”(??0Terminal@@$$FQAE@XZ) 在函数“public: __clrcall ManagedTerminal::ManagedTerminal(void)”中引用(??0ManagedTerminal@@$$FQ$AAM@XZ) ManagedTerminal.obj TerminalWrapper
谁能告诉我怎么了? 谢谢:)
【问题讨论】:
-
非托管 C++ dll 是否使用 boost::thread?
-
[我在尝试使用托管 c++ 包装原生 c++ 类时得到 LNK2028 的可能重复项](stackoverflow.com/questions/721387/…)
-
你能尝试做一个可能重现问题的小例子吗?
-
贴出exact错误信息,符号名称提供了很多线索。当然还有一个显示声明的 sn-p。
标签: c++ linker unmanaged wrapper managed