【问题标题】:Merge Win32 c++ dll with managed c++ dll将 Win32 c++ dll 与托管 c++ dll 合并
【发布时间】:2018-03-25 12:52:34
【问题描述】:

我有一个使用 /clr 支持编译的 c++ 项目(例如 wrapper.dll)。这个项目(wrapper.dll)是.Net环境和unmaged dll(例如noCode.dll)之间的一个包装器,它继承自。我无法访问继承的 dll(noCode.dll)的代码,但我可以将其链接到我的包装器(通过 noCode.lib 和 noCode.h 文件)。

当我想在 c# 项目中使用我的 wraper(wrapper.dll) 时,我会引用它并且必须将我的非托管 dll(noCode.dll) 复制到 c# 项目执行的位置。

是否可以将 c++ 未损坏的 dll(noCode.dll) 合并​​到托管 dll(wrapper.dll) 以允许在 c# 项目中通过引用(noCodeWrapper.dll)仅使用一个文件

【问题讨论】:

    标签: c# c++ .net visual-studio visual-c++


    【解决方案1】:

    无法将 DLL 文件链接在一起。

    但是您可以将该 nocode.LIB 添加到您的 DLL 中,然后就不需要 [DllImport]。由于您有 LIB 和 H 文件,因此您可以直接从托管 C++ 代码中调用“nocode”函数。

    【讨论】:

    • 是的,但如果我在任何 c# 项目中引用 wrapper.dll,我仍必须将 nocode.dll 复制到其工作目录。我想知道是否有可能避免这种情况?
    • 您不能将包装器和“nocode”合并在一起,但可以将包装器和客户端应用程序合并在一起。这样你将只有 client.exe 和 nocode.dll,但没有 wrapper.dll。
    • 好的。谢谢你的澄清。附言为什么我有-1?我的问题这么明显吗?
    【解决方案2】:

    如果您可以访问 noCode.dll 源代码,则可以将其与 wrapper.dll 集成。否则,合并 DLL 二进制文件不会产生可预测的结果。

    【讨论】:

      猜你喜欢
      • 2011-04-29
      • 1970-01-01
      • 2010-10-14
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多