gpt4 book ai didi

c# - 如何将 C++/CLI 程序编译成 .lib 并将其与纯非托管 C++ 程序链接?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:33:20 26 4
gpt4 key购买 nike

我正在关注这个 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

最佳答案

既然你不再有 DLL,你根本不应该使用 __declspec(dllimport)

实际上,我强烈反对在任何情况下在类里面使用它,它非常脆弱。

因此只需从所有类定义中删除 DLLAPI

关于c# - 如何将 C++/CLI 程序编译成 .lib 并将其与纯非托管 C++ 程序链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9238116/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com