托管代碼如何調(diào)用非托管代碼(c sharp如何調(diào)用c++代碼)?
兩種常用的做法:
下載:
http://download.microsoft.com/download/f/2/7/f279e71e-efb0-4155-873d-5554a0608523/CLRInsideOut2007_01.exe
1. COM interop
具體操作:
a. 用atl寫com服務(wù)程序
b. 使用Tlbimp將atl寫的com程序轉(zhuǎn)換成 COM DLL
用如下命令:
tlbimp 你寫的com.dll
tlbimp是 .NET Framework SDK中附帶的類型庫導(dǎo)入程序。用這個(gè)命令即是把生成一個(gè)非托管com dll的托管包裝。
c. 托管客戶端非常簡(jiǎn)單
直接new一下,然后調(diào)用對(duì)應(yīng)的方法即可。
2. P/Invoke
a. 在托管客戶端增加一條 DllImport語句和一個(gè)方法的調(diào)用。
介紹一個(gè)P/Invoke網(wǎng)站,http://pinvoke.net/
這個(gè)網(wǎng)站主要是一個(gè)wiki,允許開發(fā)者發(fā)現(xiàn),編輯,增加PInvoke的簽名,用戶自定義類型和從托管代碼(指c#和VB.net開發(fā)語言)訪問win32和其他非托管api的信息。
世界各地的.Net開發(fā)者可以很容易分享自己有價(jià)值的東西給社區(qū),