總結的c#調(diào)用DLL方法

總結的c#調(diào)用DLL方法

ID:37718807

大小:44.50 KB

頁數(shù):5頁

時間:2019-05-29

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

1、現(xiàn)粗略總結兩種C#調(diào)用DLL庫的方法,一種是C++寫的DLL庫,另一種則是C#生成的DLL庫,詳細給出了兩種不同的使用例子以供菜鳥們學習提高。第一種情況:C#中調(diào)用C++生成的DLL(1)用VS寫好如下代碼編譯成DLL庫structHHFC_SET{char*UID;intcode;};extern"C"__declspec(dllexport)intPReadUID(HHFC_SET*mystruct){inta=5;CStringds="sea";//mystruct->UID=ds.GetBuffer(ds.GetLength()+1);mystruct->UID=

2、"hello!";testtt;tt.ws();returna;}(2)在C#中生成一個文件名為Ivoke.cs(隨意取的)namespacePInvoke//域名空間,隨意取{publicclassIvoke//類名隨意取{[DllImport("standerMFC.dll")]//nPort:1代表COM1,返回-1代表已經(jīng)打開COMPORT失敗,0代表COM已經(jīng)打開,返回其它值表示打開對應的COM//publicstaticexterninthp();publicstaticexternintC++中定義的函數(shù)名(refHHFC_SETstru);//這樣的外部函

3、數(shù)引用在每一個CS文件中只能有一個,且只能是函數(shù),不能是類}publicstructHHFC_SET{publicStringUid;publicintcode;}//C++寫的DLL文件中定義的結構體}(1)在CS編輯器中再次添加一個CS文件,名字自取,但包函main入口函數(shù),在這個文件中便可以引用C++寫的DLL文件中的函數(shù)了usingSystem;usingSystem.Text;namespacePInvoke{classClass1{staticvoidMain(string[]args){HHFC_SETstru=newHHFC_SET();stru.Uid=

4、"";HHFC_SETstru1=newHHFC_SET();stru1.Uid="weisong513!";Ivoke.PReadUID(refstru);Console.WriteLine(stru.Uid+","+stru1.Uid);Console.Read();}}}第二種情況:C#調(diào)用C#寫的DLL文件(一)、準備工作我們需要對我們接下來要做的事情做個簡單的介紹,在本文我們將利用C#語言創(chuàng)建一個名為MyDLL.DLL的動態(tài)鏈接庫,在這個動態(tài)鏈接庫文件中我們將提供兩個功能一個是對兩個參數(shù)交換他們的值,另一個功能是求兩個參數(shù)的最大公約數(shù)。然后創(chuàng)建一個應用程序使用這

5、個DLL。運行并輸出結果。(二)、創(chuàng)建DLL(1)創(chuàng)建以下三個C#代碼文件:1、MySwap.csusingSystem;namespaceMyMethods{publicclassSwapClass{publicstaticboolSwap(reflongi,reflongj){i=i+j;j=i-j;i=i-j;returntrue;}}}2、MyMaxCD.csusingSystem;namespaceMyMethods{publicclassMaxCDClass{publicstaticlongMaxCD(longi,longj){longa,b,temp;if(

6、i>j){a=i;b=j;}else{b=i;a=j;}temp=a%b;while(temp!=0){a=b;b=temp;temp=a%b;}returnb;}}}}(2)接下來的任務是把這兩個cs文件變成我們需要的DLL文件。在安裝了Microsoft.NETFramework的操作系統(tǒng)上的Windows所在目錄下找到Microsoft.NET目錄,找到C#的編譯器:CSC.EXE運行:csc/target:library/out:MyDLL.DLLMySwap.csMyMaxCD.cs完成后可在本目錄下面找到我們剛才生成的MyDLL.DLL文件/target:li

7、brary編譯器選項通知編譯器輸出DLL文件而不是EXE文件。后跟文件名的/out編譯器選項用于指定DLL文件名。如果/out后面不跟文件名編譯器使用第一個文件(MySwap.cs)作為DLL文件名。生成的文件為MySwap.DLL文件(3)創(chuàng)建動態(tài)鏈接庫文件的任務完成了。(三)將剛生成的DLL文件運用到C#文件中編寫如下:usingSystem;usingMyMethods;//這里我們引用剛才定義的名稱空間,如果剛才的兩個文件我們寫在兩個不同的名稱空間classMyClient{publicstaticvoidMain(s

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

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

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