在 Visual C++/Native 代码中调用.NET 程序集

时间:2022-03-29 03:00:48
在本地 Visual C++ 中基本上有四种方法可以调用 .NET 程序集。微软的 All-In-One Code Framework   All-In-One Interop and Fusion Code Samples 有一些可以工作的例子来说明这个问题。

1.本地 VC++模型调用CLR Hosting APIs来托管CLR,加载并调用.NET程序集,该方法也被用来保护.NET程序(套一层Native 外壳)。(All-In-One Code Framework Sample CodeCppHostCLR

2.如果.NET程序集能够表示成一个COM组件,本地 VC++模型就能够通过互操作层(COM interop)调用.NET程序集。(All-In-One Code Framework Sample CodeCppCOMClient

3.逆向调用:把托管代码的委托作为一个本地代码中的回调函数。(All-In-One Code Framework Sample Code: CSPInvokeDll)

4.如果包含本地VC++代码的模型能够允许enable CLR,本地 VC++就能够通过“It Just Works”,或者“IJW”机制直接调用.NET程序集。(All-In-One Code Framework Sample CodeCppCLIWrapLib