如何在非托管C++中调用.NET的程序集
转载:http://social.msdn.microsoft.com/Forums/zh-CN/visualcpluszhchs/thread/92b73da2-32bc-4856-b296-81283cccb919/
方案一,使用C++/CLI封装
这个例子在All-In-One Code Framework (Library)中可以找到
分别是:
· CSClassLibrary ( C# 的类库)
· CppCLINETAssemblyWrapper(在C++/CLI中调用上面的C#类库,并封装)
· CppCallNETAssemblyWrapper(一个非托管的C++程序调用C++/CLI封装的C#的类库)
CppCallNETAssemblyWrapper通过CppCLINETAssemblyWrapper调用CSClassLibrary
第二中方案 CLR寄宿(Host CLR)
例子
· CSClassLibrary (C# 的类库)
· CppHostCLR (一个非托管的C++程序里面包含CLR寄宿来调用C#类库)
这个非托管的项目寄宿一个CLR,在那里实例化一个.NET 程序集CSClassLibrary.dll并且调用里面的方法。.NET Framework 1.x Hosting Interfaces 和 .NET Framework 2.0 Hosting Interfaces中的方法都会在里面出现。
方案三,把.NET程序集转换为COM服务,然后通过C++调用这个COM的接口,从而实现对其访问
例子
· CSDllCOMServer (一个C#的类库转换成COM服务)
· CppCOMClient (一个非托管的C++程序通过COM服务调用C#类库里面的方法)
非托管的C++程序通过调用COM服务来访问C#类库。