2016-06-09 76 views
0

我已经在c#中使用了Assembly.Load选项来加载c#程序集,并且它已成功运行。但使用相同的方法来加载C++程序集,我无法得到。有什么办法来加载这些C++程序集?请分享想法。提前致谢。如何从c#加载C++程序集?

+0

我认为简短的答案是“com组件” – TweeZz

+0

是第三方库还是你控制它们。这些C++库在其他项目中使用吗? COM只是其中一个选项。 –

回答

1

汇编是专门用于包含.NET/CLR代码的DLL的术语。此代码通常是垃圾收集的,需要与CLR进行交互。

如果您需要加载任何其他类型的DLL,该DLL中的代码类型将决定您如何接近它。

如果可以将DLL打包为/转换为COM对象,则将其封装起来相当简单,如this tutorial所示。您只需导入类型库,然后使用生成的托管包装。

如果这不可行或不可取,请使用P/Invoke,如this tutorial所示。您将创建导入语句以指定您的DLL中实现了一个函数。这不适用于C++类。

第三种方法是实际修改C++以包含托管代码,这需要使用C++/CLI。对于大多数项目来说,这是一个更大的工作量,所以我会选择前两个选项之一。