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

ID:40525506

大?。?4.00 KB

頁數(shù):6頁

時間: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的方法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

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

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

3、vention指示入口點的函數(shù)調(diào)用約定(默認WINAPI)(上次報告講過的)SetLastError指示被調(diào)用方在從屬性化方法返回之前是否調(diào)用SetLastErrorWin32API函數(shù)(C#中默認false)int類型[DllImport(“MyDLL.dll")]//返回個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不會被改變returna+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可以被改變returna+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

當前文檔最多預覽五頁,下載文檔查看全文

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

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