我们有本机 Win32 C++ 代码和一组我们希望从 C++ 代码调用的 C# 程序集。我将我们的选项总结为:
使用 COM。C# 代码需要使用其他属性(GUID、COMVisible)进行修饰。C# 程序集需要注册 regasm,然后通过 COM 可用于本机 C++ 代码。
使用 C++/CLI(以前托管的 C++)包装类。可以将 C++ 类添加到本机 C++ 项目中。该类将使用 /clr 编译。本机 C++ 代码将调用 C++/CLI 类,然后再调用 .Net 代码。不涉及 COM。CLR 由 C++/CLI 扩展处理的编组所需的魔法启动。
在本机 C++ 代码中托管 CLR 的实例。
我将打折选项 3,因为除了我们不再需要包装类之外,我看不到选项 2 的好处。所以问题是,选项 1 与选项 2 的优缺点是什么?
提前致谢。