| http://stainboyx./2010/05/22/n%E7%A7%8D%E6%96%B9%E6%B3%95%E4%BD%BF%E7%94%A8c%E8%B0%83%E7%94%A8c-net%E5%BA%93/ 
 
 為了減少篇幅,此文不描述何種場景下需要使用C++調(diào)用C#/VB等托管代碼,而直接給出三種常規(guī)方法和一些變通方法以供參考。 常規(guī)方法1:COM 使用C#把托管類注冊成COM,用regasm.exe注冊output assembly,然后用C++像調(diào)用COM一樣調(diào)用assembly里面的type。 優(yōu)點:編寫代碼簡單,調(diào)用方便 缺點:需要注冊output,發(fā)布不夠簡單 參考:http://www./KB/cs/ManagedCOM.aspx 常規(guī)方法2:CLR C#常規(guī)編寫類,生產(chǎn)assembly,C++使用CLR編譯既可直接引用托管類。 優(yōu)點:編寫代碼簡單,調(diào)用方便 缺點:需要了解C++ CLR語法(既不像C++,又不像C#,總之很奇怪) 參考:http://www./KB/mcpp/cppcliintro01.aspx ,http://msdn.microsoft.com/en-us/library/k8d11d4s.aspx 常規(guī)方法3(推薦):API C#常規(guī)編寫類,生產(chǎn)assembly,C++使用SDK提供的CLR非托管接口(CLRCreateInstance)進(jìn)行調(diào)用。 優(yōu)點:傳統(tǒng)C#編程,傳統(tǒng)C++編程 缺點:暫時還沒發(fā)現(xiàn) 參考:http://nport./SourceControl/changeset/view/45681#903468 ,http://msdn.microsoft.com/en-us/library/dd537633.aspx 變通方法: 1. 使用C#/VB包裝現(xiàn)有托管類,注冊成Windows服務(wù),暴露SOAP web service。VC2005可以使用非托管代碼添加引用Web service。 2. 使用C#/VB包裝現(xiàn)有托管類,注冊成Windows服務(wù)。C++利用Windows message和服務(wù)通訊。 3. 使用C#/VB包裝現(xiàn)有托管類,注冊成Windows服務(wù)。C++利用Windows共享內(nèi)存和服務(wù)通訊。 其實利用雙進(jìn)程通訊的方法,可以演變出各種各樣調(diào)用的思路。聰明的你可以充分發(fā)揮想象力,寫出自己獨有的調(diào)用模式。 | 
|  |