技術文章 > 用Visual C#做DLL文件

用Visual C#做DLL文件

2020-02-27 13:44

文檔管理軟件,文檔管理系統,知識管理系統,檔案管理系統的技術資料:

作為軟件設計和開發人員大都有過使用DLL(動態連接庫)的經歷,DLL的產生使得我們的應用程序在可維護性、代碼的重復使用等方面都有了很大的提高。以前用的DLL一般都是用Visual C++、Delphi或者VB等編程語言來編寫的,這種DLL的編寫和使用,我們大都已經比較習慣了。作為新一代的程序開發語言--Visual C#,到底是如何編寫和使用DLL的呢!本文就試著就這方面的問題來進行簡單的介紹。

Visual C++、Delphi或者VB等編程語言來編寫成的DLL文件,在編譯完成過以后,產生DLL文件已經是一個可以直接供計算機使用的二進制文件。但用Visual C#編譯器生成的受管代碼(managed code)雖然也是二進制文件,但不是可以直接供計算機使用的原始代碼(機器語言代碼)。他實質上是一種中間語言(IL)代碼,這種IL代碼要轉變成可以供計算機直接使用的原始代碼,就需要經過“下一代窗口服務“( Next Generation Windows Services,簡寫為NGWS ) runtime的即時編譯器(即JIT)進行編譯。

經過以上比較,我們可以看出,用Visual C#生成的DLL文件已經和以前的DLL文件有了本質上的區別。用Visual C#生成的DLL文件在程序設計中更多的表現為一種類(Class)或者類庫(Class Library)。本文就試著通過一個具體程序的例子,按照下面步驟來具體介紹:

  (1).創建一個DLL源代碼。
  (2).編譯此DLL源代碼,生成DLL文件。
  (3).用此DLL來創建一個簡單的客戶端程序。
一. 程序設計開發及運行環境:
  (1).微軟視窗2000專業版
  (2)..Net FrameWork SDK Beta 2
二. 創建一個DLL源代碼(dll.cs)
由于用Visual C#創建的DLL,此DLL是不需要執行的界面,所以在DLL文件就沒有必要定義Main ()函數,來作為應用程序執行的入口。Dll.cs的源程序代碼如下:
Dll.cs:
namespace Dll file://定義了名稱空間,在調用DLL的時候就要導入此名稱空間。
{
 public class Show file://定義了一個類,在程序中就要來繼承此類。
 { 
  public string Messages ( )
  file://定義了一個方法,此方法的作用就是返回下面字符串。
  {
   return “歡迎使用Visual C#做的DLL文件!“ ;
  }
 }
}
通過此DLL的源程序可以看出,此DLL表現為一個小型的類庫,這是因為在此DLL中封裝了名字叫DLL的名稱空間,在此名稱空間中又定義了一個Show類,在此類中有一個方法就是Messages。雖然定義的內容相對少了些,但卻相當完全。
三. 編譯此DLL源代碼,生成DLL文件
  要把DLL源代碼編譯成DLL文件,就需要配置好編譯器Csc.exe的參數和開關。我們知道編譯器Csc.exe可以把源代碼編譯成四種不同的文件,分別是控制應用程序、代碼庫、windows應用程序、模塊程序。編譯命令具體如下:
csc /target:exe myProj.cs // 創建一個myProj.exe控制程序
csc /target:winexe myProject.cs file://創建一個myProj.exe的windows程序
csc /target:library myProject.cs file://創建一個myProj.dll代碼庫
csc /target:module myProject.cs file://創建一個myProj.dll模塊
  對于如何配置編譯器Csc.exe的其他參數和開關,可以參考稍前發表的文章《如何用CSC.exe來編譯Visual C#的代碼文件》,在此篇文章里面有比較詳細的介紹。通過以下編譯命令可以得到mydll.dll文件:
Csc /r:system.dll /t:library /out:mydll.dll dll.cs
四.用此DLL來創建一個簡單的客戶端程序(test.exe)
通過以上的源程序代碼可以看到生成的mydll.dll文件雖然是一個以DLL為擴展名,實際上是一個類庫,和我們經常用到的System.dll、System.Windows.Forms.dll等這些文件相似。同樣用mydll.dll創建程序也和用以上這些類庫創建程序相類似。就是第一步就是導入此名稱空間--Dll。然后在去繼承里面封裝好的類--Show,再調用類中定義好的方法--Messages。下面就是按照以上的步驟,創建的客戶端的源程序代碼( test.cs ) :
test.cs:
using Dll ; // 導入此名稱空間
using System ;
public class GetMessage
{
 public static void Main ( )
 {
  Show hi = new Show ( ) ; // 繼承名稱空間中定義的Show類
  Console.WriteLine ( hi.Messages ( ) ) ; // 調用此類中的方法
 }
}
在把test.cs編譯成執行程序中,要在編譯命令中添加一個引用,就是引用mydll.dll文件。具體的編譯命令如下:
csc /r:mydll.dll /r:system.dll test.cs
編譯完成,就會生成test.exe。執行此文件就會得到以下執行界面:

圖01:在客戶端制作調用DLL的應用程序執行界面
五.總結:
通過此篇文章,可以看出用Visual C#制作一個DLL其實并不是一件很復雜的事件,但對DLL的調用卻和以往有了較大區別,其中最主要的原因是,用Visual C#或者其他.Net 程序開發語言制作的DLL和以前的DLL有了實質上的區別。它已經不是嚴格意義上的動態連接庫了,而是一個類或者類庫。
体彩7星彩规则 聚融信配资 点点盈配资 上证指数是什么意思,代表哪些参数呢 如何算股票涨跌幅 股票融资有什么用 18年上证指数走势图 炒股软件十大排名 理财产品投多少比较合适 股票入门视频 华能国际股票行情 亿融配资 今日上证指数行情 尊享配资 决策天机 股票分析软件 聚赢盘配资 股票涨跌颜色绿色代表什么