错误LNK2028:在C ++ / CLI中实例化本机C ++类时抛出

时间:2013-06-10 08:57:42

标签: c# c++ c++-cli

目前,我正致力于开发包含C ++ / CLI项目(本机C ++ dll的包装)和C#WPF项目(使用C ++ / CLI包装器功能)的解决方案。 / p>

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

类别:

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. 如果代码有任何改进或有任何建议可以帮助我解决问题;随时发表评论。

1 个答案:

答案 0 :(得分:0)

What causes this linker error?

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

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

  1. 如上所述使用dllexport here
  2. (或)

    1. 使用模块定义文件(.def file)导出DLL提及的功能here