将本机DLL和程序集合并到一个DLL中

Yin*_*Zhu 4 .net c# c++ dll

我目前正在用C++和C#编程.使用本机C++进行数值计算部分.

最初我打算使用C++/CLI来创建本机C++类的包装器,但我发现它会导致2到4倍的减速.

所以我决定将我的原生C++编译成DLL,并通过P/Invoke调用 .NET/C#.我将在C#中进行数据预处理,并在本机DLL中进行数字运算.

问题是,当我为其他人提供我的工作时,我希望它是一个单独的DLL.

这可能吗?顺便说一下,我有原生C++的所有源代码.

DrP*_*zza 6

通过生成netmodules,您可以非常轻松地完成此操作.将组合的C++和C++/CLI代码编译为.obj(C++ netmodules具有文件扩展名.obj,C#netmodules具有文件扩展名.netmodule),然后将其链接到您的C#项目中.

详情:http://blogs.msdn.com/junfeng/archive/2005/05/19/420186.aspx.工作示例:http://blogs.msdn.com/b/junfeng/archive/2006/05/20/599434.aspx.


Pau*_*aul -1

您可以在 .NET 中的同一程序集中混合使用多种语言,但这是不自然的。除非绝对必要,否则我会避免这种情况。

看:

http://www.hanselman.com/blog/MishingLanguagesInASingleAssemblyInVisualStudioSeamlessWithILMergeAndMSBuild.aspx

我将不同语言的程序集分开。

  • ILMerge 仅适用于托管代码。将本机代码与托管代码组合时它没有帮助。 (2认同)