2

我正在关注这个http://www.codeproject.com/Articles/10020/Using-managed-code-in-an-unmanaged-application

该示例由 3 个二进制文件组成:

  1. C# 代码
  2. C++/CLI 代码
  3. C++ 代码

C++ 代码调用 C++/CLI 代码,然后调用 C# 代码,以实现从 C++ 运行 C# 代码的方式。

问题是,C++/CLI 编译为 .dll,当我尝试将其编译为 .lib 时,使 C++ 代码与 C++/CLI 代码链接在一起,它失败了。

这样最终结果将仅包含 2 个二进制文件。

  1. C# 代码
  2. C++ --LINK-- C++/CLI 代码

错误

Error   1   error LNK2019: unresolved external symbol "__declspec(dllimport) public: static void __cdecl IMessageBoxWrapper::Destroy(class IMessageBoxWrapper *)" (__imp_?Destroy@IMessageBoxWrapper@@SAXPAV1@@Z) referenced in function _main  C:\Users\Zero\Desktop\UmanagedApp\UmanagedApp\main.obj  UmanagedApp

Error   2   error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class IMessageBoxWrapper * __cdecl IMessageBoxWrapper::CreateInstance(void)" (__imp_?CreateInstance@IMessageBoxWrapper@@SAPAV1@XZ) referenced in function _main C:\Users\Zero\Desktop\UmanagedApp\UmanagedApp\main.obj  UmanagedApp
4

1 回答 1

1

由于您不再拥有 DLL,因此您根本不应该使用__declspec(dllimport)

实际上,无论如何我都强烈反对在课堂上使用它,它非常脆弱。

所以只需DLLAPI从所有类定义中删除。

于 2012-02-11T05:41:54.073 回答