将Win32 c ++ dll与托管c ++ dll合并

时间:2017-10-13 11:35:04

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

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

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

是否可以将c ++ unmamaged dll(noCode.dll)合并到托管dll(wrapper.dll)以允许在c#项目中使用仅引用一个文件(noCodeWrapper.dll)? / p>

2 个答案:

答案 0 :(得分:2)

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

但是你可以将nocode.LIB添加到你的DLL然后你不需要[DllImport]。由于你有LIB和H文件,你可以调用" nocode"直接从托管C ++代码中运行。

答案 1 :(得分:1)

如果您可以访问noCode.dll源代码,则可以将其与wrapper.dll集成。否则,合并DLL二进制文件不是一个可以提供可预测结果的任务。