1

目前,我正在开发一个包含 C++/CLI 项目(它是本机 C++ dll 的包装器)和 C# WPF 项目(使用 C++/CLI 包装器的功能)的解决方案。

我遇到的问题是,当(在包装器内)实例化指向本机类的指针时,会发生链接器错误。

班级:

public ref class MCBiosUpdate
{
public:
    MCBiosUpdate(void);
    MCBiosUpdate(MCBiosUpdate^);
    MCBiosUpdate(CBIOSUpdate&);
    ~MCBiosUpdate(void);
    !MCBiosUpdate(void);

private:
    CBIOSUpdate *pBiosUpdate;      //Native C++ Class
};

导致错误的代码:

MCBiosUpdate::MCBiosUpdate(void) : pBiosUpdate(new CBIOSUpdate)   //error LNK2028
{
}

输出:

1>MCBiosUpdate.obj : 错误 LNK2028: 未解析的令牌 (0A00000E) "public: __thiscall CBIOSUpdate::~CBIOSUpdate(void)" (??1CBIOSUpdate@@$$FQAE@XZ)

  1. 如何解决链接器错误,以便程序按预期运行?
  2. 是什么导致此链接器错误?
  3. 如果对代码有任何改进或有任何建议可以帮助我解决问题;随时发表评论。
4

1 回答 1

0

What causes this linker error?

原因可能是pBiosUpdate接口未从 DLL 导出以对 DLL 的客户端可见,在您的情况下是 C# 代码。

How can I resolve the linker error so that the program runs as intended?

  1. 使用这里dllexport提到的

(或者)

  1. 使用模块定义文件 ( .def file) 导出 DLL 的函数,如此处所述
于 2013-06-10T09:10:11.937 回答