如何在非託管C++中調用.NET的程序集

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章