我正在开发一个由两个 DLL 组成的 C# 组件:
- 用 C++/CLI 编写的 .DLL 导出符号;不幸的是,这个 DLL 动态链接到 CRT,似乎没有办法解决这个问题。
- AC# 组装。
C++/CLI DLL 被加载,然后加载 C# 程序集(并将大多数调用转发给它)。是否可以简化这种情况,以便我立即从 C# 程序集中导出符号?
您可以从 C# 将您的功能导出为COM 服务器,这样从 C++ 调用它应该很容易,就像您对任何其他非 C# COM 对象所做的那样。
我最终选择了http://www.codeproject.com/Articles/37675/Simple-Method-of-DLL-Export-without-C-CLI中描述的解决方案
一般的方法是有一个专用的属性,用于装饰要导出的函数。构建组件后,ildasm
用于拆卸它。生成的 IL 被打了一点补丁,以便导出预先修饰的函数,然后再次将 IL 组装成一个程序集。