淺析C#語言調(diào)用DLL
一、寫在前面
C#語言是一種簡單但功能強(qiáng)大的編程語言,用于編寫企業(yè)應(yīng)用程序。
C#語言從C和C++語言演化而來,在語句、表達(dá)式和運(yùn)算符方面使用了許多C++ 功能。
C#語言在類型安全性、版本轉(zhuǎn)換、事件和垃圾回收等方面進(jìn)行了相當(dāng)大的改進(jìn)和創(chuàng)新。
C#語言提供對(duì)常用API 樣式(如 .NET 框架、COM、自動(dòng)化和 C 樣式 API 等)的訪問。
和大多數(shù)程序員一樣,你一定使用過DLL。也一定曾感受到它的帶給你程序設(shè)計(jì)和編碼上的好處。我想和大家探討一個(gè)主題:如何利用C#語言調(diào)用DLL(動(dòng)態(tài)鏈接庫), 其實(shí)在很大意義上講,DLL讓我們更靈活的組織編寫我們的應(yīng)用程序,作為軟件設(shè)計(jì)者,可以根據(jù)它來達(dá)到很高的代碼重用效果。下面我來介紹一下在C#語言調(diào)用DLL。
二、準(zhǔn)備工作
我們需要對(duì)接下來要做的事情做個(gè)簡單的介紹,在本文我們將利用C#語言創(chuàng)建一個(gè)名為 MyDLL.DLL的動(dòng)態(tài)鏈接庫,在這個(gè)動(dòng)態(tài)鏈接庫文件中我們將提供兩個(gè)功能:一個(gè)是對(duì)兩個(gè)參數(shù)交換他們的值;另一個(gè)功能是求兩個(gè)參數(shù)的最大公約數(shù)。然后創(chuàng)建一個(gè)應(yīng)用程序使用這個(gè)DLL,運(yùn)行并輸出結(jié)果。
三、創(chuàng)建DLL
讓我們創(chuàng)建以下兩個(gè)C#代碼文件:
- usingSystem;
- namespaceMyMethods
- {
- publicclassSwapClass
- {
- publicstaticboolSwap(reflongi,reflongj)
- {
- ii=i+j;
- j=i-j;
- ii=i-j;
- returntrue;
- }
- }
- }
- usingSystem;
- namespaceMyMethods
- {
- publicclassMaxCDClass
- {
- publicstaticlongMaxCD(longi,longj)
- {
- longa,b,temp;
- if(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;
- }
- }
- }
- }
需要注意的是:我們?cè)谥谱鬟@兩個(gè)文件的時(shí)候可以用Visual Studio.NET或者其他的文本編輯器,就算是記事本也可以。這兩個(gè)文件雖然不在同一個(gè)文件里面,但是他們是屬于同一個(gè)namespace(名稱空間),這對(duì)以后我們使用這兩個(gè)方法提供了方便。當(dāng)然他們也可以屬于不同的名稱空間,這是完全可以的。但只是在我們應(yīng)用它們的時(shí)候就需要引用兩個(gè)不同的名稱空間,所以建議還是寫在一個(gè)名稱空間下面比較好。
接下來的任務(wù)是把這兩個(gè)cs文件變成我們需要的DLL文件。方法是這樣的:在安裝了Microsoft.NET Framework的操作系統(tǒng)上,我們可以在Windows所在目錄下找到Microsoft.NET目錄。在這個(gè)目錄下面提供了C#的編譯器CSC.EXE,運(yùn)行csc/target:library/out:MyDLL.DLL MySwap.cs MyMaxCD.cs
完成后可在本目錄下面找到我們剛才生成的MyDLL.DLL文件/target:library 編譯器選項(xiàng)通知編譯器輸出 DLL 文件而不是 EXE 文件。后跟文件名的 /out 編譯器選項(xiàng)用于指定 DLL 文件名。
如果/out后面不跟文件名編譯器,使用第一個(gè)文件 (MySwap.cs) 作為 DLL 文件名。生成的文件為MySwap.DLL文件。
OK!我們創(chuàng)建動(dòng)態(tài)鏈接庫文件的任務(wù)完成了,現(xiàn)在是我們享受勞動(dòng)成果的時(shí)候了。以上介紹C#語言調(diào)用DLL。
【編輯推薦】