分享 N種方法使用C++調用C#.NET庫


分享 N種方法使用C++調用C#.NET庫

加精
為了減少篇幅,此文不描述何種場景下需要使用C++調用C#/VB等托管代碼,而直接給出三種常規方法和一些變通方法以供參考。

常規方法1:COM

使用C#把托管類注冊成COM,用regasm.exe注冊output assembly,然后用C++像調用COM一樣調用assembly里面的type。

優點:編寫代碼簡單,調用方便

缺點:需要注冊output,發布不夠簡單

參考:http://www.codeproject.com/KB/cs/ManagedCOM.aspx

常規方法2:CLR

C#常規編寫類,生產assembly,C++使用CLR編譯既可直接引用托管類。

優點:編寫代碼簡單,調用方便

缺點:需要了解C++ CLR語法(既不像C++,又不像C#,總之很奇怪)

參考:http://www.codeproject.com/KB/mcpp/cppcliintro01.aspx ,http://msdn.microsoft.com/en-us/library/k8d11d4s.aspx

常規方法3(推薦):API

C#常規編寫類,生產assembly,C++使用SDK提供的CLR非托管接口(CLRCreateInstance)進行調用。

優點:傳統C#編程,傳統C++編程

缺點:暫時還沒發現

參考:http://nport.codeplex.com/SourceControl/changeset/view/45681#903468 ,http://msdn.microsoft.com/en-us/library/dd537633.aspx

變通方法:

1. 使用C#/VB包裝現有托管類,注冊成Windows服務,暴露SOAP web service。VC2005可以使用非托管代碼添加引用Web service。

2. 使用C#/VB包裝現有托管類,注冊成Windows服務。C++利用Windows message和服務通訊。

3. 使用C#/VB包裝現有托管類,注冊成Windows服務。C++利用Windows共享內存和服務通訊。

其實利用雙進程通訊的方法,可以演變出各種各樣調用的思路。聰明的你可以充分發揮想象力,寫出自己獨有的調用模式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM