2017-10-13 116 views
-1

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

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

是否有可能合并C++ unmamaged DLL(noCode.dll)来管理DLL(wrapper.dll),以允许在C#项目引用(noCodeWrapper.dll)使用只有一个文件

回答

2

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

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

+0

是的,但仍然如果我在任何C#项目引用wrapper.dll我必须将nocode.dll复制到其工作目录。我想知道是否有可能避免这种情况? – MAN

+0

您不能将包装器和“nocode”合并在一起,但可以将包装器和客户端应用程序合并在一起。这样你将只有client.exe和nocode.dll,但不包含wrapper.dll。 –

+0

好的。感谢您的澄清。附:为什么我有-1?我的问题如此明显? – MAN

1

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