序言

本文介紹一個(gè)C++如何調(diào)用C#開(kāi)發(fā)的dll實(shí)例。

前言

C++編寫的程序?yàn)榉峭泄艽a,C#編寫的程序?yàn)橥泄艽a。托管代碼雖然提供了其他開(kāi)發(fā)平臺(tái)沒(méi)有的許多優(yōu)勢(shì),但由于前期系統(tǒng)及歷史版本很多使用的是非托管代碼編寫的程序,所以CLR提供了一些機(jī)制,允許在應(yīng)用程序中同時(shí)包含托管和非托管代碼。具體說(shuō)分為以下三種:

  1. 托管代碼能調(diào)用DLL中的非托管函數(shù)。通過(guò)P/Invoke(Platform Invoke)機(jī)制調(diào)用DLL中的函數(shù),如Kernel32.dll等。

  2. 托管代碼可以使用現(xiàn)有COM組件(服務(wù)器)。許多公司都已經(jīng)實(shí)現(xiàn)了大量非托管COM組件。利用來(lái)自這些組件的類型庫(kù),可創(chuàng)建一個(gè)托管程序集來(lái)描述COM組件。托管代碼可像訪問(wèn)其他任何類型一樣訪問(wèn)托管程序集中的類型。

  3. 非托管代碼可以使用托管類型(服務(wù)器)。許多現(xiàn)有的非托管代碼要求提供COM組件來(lái)確保代碼正確工作。使用托管代碼可以更簡(jiǎn)單地實(shí)現(xiàn)這些組件,避免所有代碼都不得不和引用計(jì)數(shù)和接口打交道。比如C++調(diào)用C#開(kāi)發(fā)的dll。

以上部分文字摘自《CLR via C#》,會(huì)比較難懂點(diǎn)。剛好工作中有通過(guò)C++調(diào)用C#開(kāi)發(fā)的dll的經(jīng)驗(yàn),也就是上述第3點(diǎn)。所以想借此文記錄下開(kāi)發(fā)的步驟和思路。后續(xù)有時(shí)間再把上述的1、2點(diǎn)補(bǔ)上,形成一個(gè)系列文章。

正文

1、用C#編寫dll

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式