如何在非託管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#類庫。