C#里調(diào)用DLL的方法

C#里調(diào)用DLL的方法

ID:40525506

大小:34.00 KB

頁數(shù):6頁

時(shí)間:2019-08-04

C#里調(diào)用DLL的方法_第1頁
C#里調(diào)用DLL的方法_第2頁
C#里調(diào)用DLL的方法_第3頁
C#里調(diào)用DLL的方法_第4頁
C#里調(diào)用DLL的方法_第5頁
資源描述:

《C#里調(diào)用DLL的方法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、為了能用上原來的C++代碼,只好研究下從C#中調(diào)用DLL首先必須要有一個(gè)聲明,使用的是DllImport關(guān)鍵字:包含DllImport所在的名字空間usingSystem.Runtime.InteropServices;publicclassXXXX{[DllImport(“MyDLL.dll")]publicstaticexternintmySum(inta,intb);}[DllImport(“MyDLL.dll")]publicstaticexternintmySum(inta,intb);代碼中DllImport關(guān)鍵字作用是告訴編譯器入口點(diǎn)在哪里,并將打包函數(shù)捆綁在這個(gè)類

2、中在調(diào)用的時(shí)候在類中的時(shí)候直接??mySum(a,b);就可以了在其他類中調(diào)用:XXXX.mySum(a,b);[DllImport(“MyDLL.dll”)]在申明的時(shí)候還可以添加幾個(gè)屬性[DllImport(“MyDLL.dll",EntryPoint="mySum",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]EntryPoint:指定要調(diào)用的DLL入口點(diǎn)。默認(rèn)入口點(diǎn)名稱是托管方法的名稱。CharSet:控制名稱重整和封送String參數(shù)的方式(默認(rèn)是UNICODE)CallingCon

3、vention指示入口點(diǎn)的函數(shù)調(diào)用約定(默認(rèn)WINAPI)(上次報(bào)告講過的)SetLastError指示被調(diào)用方在從屬性化方法返回之前是否調(diào)用SetLastErrorWin32API函數(shù)(C#中默認(rèn)false)int類型[DllImport(“MyDLL.dll")]//返回個(gè)int類型publicstaticexternintmySum(inta1,intb1);//DLL中申明extern“C”__declspec(dllexport)?intWINAPImySum(inta2,intb2){//a2b2不能改變a1b1//a2=..//b2=...returna+b;}//

4、參數(shù)傳遞int類型publicstaticexternintmySum(refinta1,refintb1);//DLL中申明extern“C”__declspec(dllexport)?intWINAPImySum(int*a2,int*b2){//可以改變a1,b1*a2=...*b2=...returna+b;}DLL需傳入char*類型[DllImport(“MyDLL.dll")]//傳入值publicstaticexternintmySum(string?astr1,stringbstr1);//DLL中申明extern“C”__declspec(dllexport)

5、?intWINAPImySum(char*astr2,char*bstr2){//改變astr2bstr2?,astr1bstr1不會(huì)被改變r(jià)eturna+b;}DLL需傳出char*類型[DllImport(“MyDLL.dll")]//傳出值publicstaticexternintmySum(StringBuilderabuf,StringBuilderbbuf);//DLL中申明extern“C”__declspec(dllexport)?intWINAPImySum(char*astr,char*bstr){//傳出char* 改變astr bstr-->abuf,bb

6、uf可以被改變r(jià)eturna+b;}DLL回調(diào)函數(shù)BOOLEnumWindows(WNDENUMPROClpEnumFunc,LPARAMlParam)usingSystem;usingSystem.Runtime.InteropServices;publicdelegateboolCallBack(inthwnd,intlParam);//定義委托函數(shù)類型publicclassEnumReportApp{[DllImport("user32")]publicstaticexternintEnumWindows(CallBackx,inty);publicstaticvoidMa

7、in(){CallBackmyCallBack=newCallBack(EnumReportApp.Report);EnumWindows(myCallBack,0);}publicstaticboolReport(inthwnd,intlParam){Console.Write("Windowhandleis");Console.WriteLine(hwnd);returntrue;}}DLL?傳遞結(jié)構(gòu)??(見代碼)BOOLPtInRect(constRECT*lprc,POI

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。