亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

如何利用C#創建和調用DLL

2019-11-18 19:47:46
字體:
來源:轉載
供稿:網友

一、寫在前面
C# 語言是一種簡單但功能強大的編程語言,用于編寫企業應用程序。

C# 語言從C和 C++語言演化而來,在語句、表達式和運算符方面使用了許多 C++ 功能。

C# 語言在類型安全性、版本轉換、事件和垃圾回收等方面進行了相當大的改進和創新。

C# 語言提供對常用 API 樣式(如 .NET 框架、COM、自動化和 C 樣式 API 等)的訪問。

       什么是動態鏈接庫?DLL三個字母對于你來說一定很熟悉吧,它是Dynamic Link Library 的縮寫形式,動態鏈接庫 (DLL) 是作為共享函數庫的可執行文件。動態鏈接提供了一種方法,使進程可以調用不屬于其可執行代碼的函數。函數的可執行代碼位于一個 DLL 中,該 DLL 包含一個或多個已被編譯、鏈接并與使用它們的進程分開存儲的函數。DLL 還有助于共享數據和資源。多個應用程序可同時訪問內存中單個 DLL 副本的內容。

和大多數程序員一樣,你一定很使用過DLL吧。也曾感受到它的帶給你程序設計和編碼上的好錯吧今天我想和大家探討一個主題:如何在C#創建和調用DLL(動態鏈接庫), 其實在很大意義上而講,DLL讓我更靈活的組織編寫我們的應用程序,作為軟件設計者,可一個根據它來達到很高的代碼重用效果。下面我來介紹一下在C#中如何創建和調用DLL。

 

二、準備工作

 

我們需要對我們接下來要做的事情做個簡單的介紹,在本文我們將利用C#語言創建一個名為 MyDLL.DLL的動態鏈接庫,在這個動態鏈接庫文件中我們將提供兩個功能一個是對兩個參數交換他們的值,另一個功能是求兩個參數的最大公約數。然后創建一個應用程序使用這個DLL。運行并輸出結果。

 

三、創建DLL

 

讓我們創建以下三個C#代碼文件:

1、  MySwap.cs

using System;

namespace MyMethods

{

     public class SwapClass

     {

          public static bool Swap(ref long i,ref long j)

          {

  i = i+j;

  j = i-j;

  i = i-j;

  return true;

          }

     }

}

 

2、  MyMaxCD.cs

using System;

namespace MyMethods

{

     public class MaxCDClass

     {

          public static long MaxCD(long i, long j)

          {

  long a,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;

  }

  return b;

          }

     }

}

}需要注意的是:我們在制作這兩個文件的時候可以用Visual Studio.NET或者其他的文本編輯器,就算是記事本也可以。這兩個文件雖然不在同一個文件里面,但是他們是屬于同一個namespace(名稱空間)這對以后我們使用這兩個方法提供了方便。當然他們也可以屬于不同的名稱空間,這是完全可以的,但只是在我們應用他們的時候就需要引用兩個不同的名稱空間,所以作者建議還是寫在一個名稱空間下面比較好。
接下來的任務是把這兩個cs文件變成我們需要的DLL文件。方法是這樣的:
在安裝了Microsoft.NET Framework的操作系統上,我們可以在Windows所在目錄下找到Microsoft.NET目錄。在這個目錄下面提供了C#的編譯器,CSC.EXE
運行:csc /target:library /out:MyDLL.DLL MySwap.cs MyMaxCD.cs
完成后可在本目錄下面找到我們剛才生成的MyDLL.DLL文件
/target:library 編譯器選項通知編譯器輸出 DLL 文件而不是 EXE 文件。后跟文件名的 /out 編譯器選項用于指定 DLL 文件名。
如果/out后面不跟文件名編譯器使用第一個文件 (MySwap.cs) 作為 DLL 文件名。生成的文件為MySwap.DLL文件
OK!我們創建動態鏈接庫文件的任務完成了,現在是我們享受勞動成果的時候了,下面我將介紹如何使用我們所創建的動態鏈接庫文件。
 
四、   使用DLL
 
我們簡單寫一個小程序來測試一下我們剛才寫的兩個方法是否正確,好吧,跟我來:
MyClient.cs 
using System;

using MyMethods;

//這里我們引用剛才定義的名稱空間,如果剛才的兩個文件我們寫在兩個不同的名稱空間
class MyClient

{

     public static void Main(string[] args)

     {

         if (args.Length != 2)

         {

 Console.WriteLine("Usage: MyClient <num1> <num2>");

 return;

         }

          long num1 = long.Parse(args[0]);

          long num2 = long.Parse(args[1]);

          SwapClass.Swap(ref num1,ref num2);

// 請注意,文件開頭的 using 指令使您得以在編譯時使用未限定的類名來引用 DLL 方法

          Console.WriteLine("The result of swap is num1 = {0} and num2 ={1}",num1, num2);

          long maxcd = MaxCDClass.MaxCD(num1,num2);

          Console.WriteLine("The MaxCD of {0} and {1} is {2}",num1, num2, maxcd);

     }

}

若要生成可執行文件 MyClient.exe,請使用以下命令行:

csc /out:MyClient.exe /reference:MyLibrary.DLL MyClient.cs

/out 編譯器選項通知編譯器輸出 EXE 文件并且指定輸出文件名 (MyClient.exe)。/reference 編譯器選項指定該程序所引用的 DLL 文件。

 

五、執行

 

若要運行程序,請輸入 EXE 文件的名稱,文件名的后面跟兩個數字,例如:

MyClient 123 456

 

六、輸出

 

The result of swap is num1 = 456 and num2 = 123

The MaxCD of 456 and 123 is 3

 

七、小結

動態鏈接具有下列優點:

節省內存和減少交換操作。很多進程可以同時使用一個 DLL,在內存中共享該 DLL 的一個副本。相反,對于每個用靜態鏈接庫生成的應用程序,Windows 必須在內存中加載庫代碼的一個副本。
節省磁盤空間。許多應用程序可在磁盤上共享 DLL 的一個副本。相反,每個用靜態鏈接庫生成的應用程序均具有作為單獨的副本鏈接到其可執行圖像中的庫代碼。
升級到 DLL 更為容易。DLL 中的函數更改時,只要函數的參數和返回值沒有更改,就不需重新編譯或重新鏈接使用它們的應用程序。相反,靜態鏈接的對象代碼要求在函數更改時重新鏈接應用程序。
提供售后支持。例如,可修改顯示器驅動程序 DLL 以支持當初交付應用程序時不可用的顯示器。
支持多語言程序。只要程序遵循函數的調用約定,用不同編程語言編寫的程序就可以調用相同的 DLL 函數。程序與 DLL 函數在下列方面必須是兼容的:函數期望其參數被推送到堆棧上的順序,是函數還是應用程序負責清理堆棧,以及寄存器中是否傳遞了任何參數。
提供了擴展 MFC 庫類的機制??梢詮默F有 MFC 類派生類,并將它們放到 MFC 擴展 DLL 中供 MFC 應用程序使用。
使國際版本的創建輕松完成。通過將資源放到 DLL 中,創建應用程序的國際版本變得容易得多??蓪⒂糜趹贸绦虻拿總€語言版本的字符串放到單獨的 DLL 資源文件中,并使不同的語言版本加載合適的資源。
使用 DLL 的一個潛在缺點是應用程序不是獨立的;它取決于是否存在單獨的 DLL 模塊。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
曰本色欧美视频在线| 国产91热爆ts人妖在线| 亚洲综合在线中文字幕| 奇米影视亚洲狠狠色| 久久成人精品一区二区三区| 国产精品自产拍在线观| 亚洲精品黄网在线观看| 国产精品日日摸夜夜添夜夜av| 色综合久久中文字幕综合网小说| 亚洲无亚洲人成网站77777| 亚洲va国产va天堂va久久| 伊人久久久久久久久久久| 久久久久亚洲精品| 51午夜精品视频| 国产婷婷97碰碰久久人人蜜臀| 亚洲精品久久久久中文字幕二区| 欧美日韩国产一区二区三区| 亚洲国产精品成人一区二区| xxx成人少妇69| 久久久精品国产| 中文字幕亚洲情99在线| 精品呦交小u女在线| 亚洲欧美综合区自拍另类| 久久久91精品国产一区不卡| 亚洲性视频网址| 精品国偷自产在线| 欧美激情网站在线观看| 欧美亚洲国产成人精品| 一本色道久久综合狠狠躁篇的优点| 国产精品视频一区二区高潮| 成人美女免费网站视频| 精品亚洲夜色av98在线观看| 精品久久中文字幕久久av| 亚洲欧美日韩区| 日本精品久久久久久久| 午夜精品免费视频| 国产精品永久免费| www.日本久久久久com.| 成人激情视频小说免费下载| 亚洲一区二区三| 亚洲美女视频网| 欧美在线视频免费观看| 欧美激情视频播放| 国产成人综合精品在线| 欧亚精品中文字幕| 久久久久久综合网天天| 欧美三级欧美成人高清www| 亚洲国产黄色片| 国产精品自产拍高潮在线观看| 国产精品自产拍高潮在线观看| 中文字幕久久久| 少妇高潮久久77777| 午夜美女久久久久爽久久| 91经典在线视频| 国产91九色视频| 欧美激情亚洲综合一区| 国产亚洲a∨片在线观看| 国产精品久久久久久久久粉嫩av| 欧美午夜久久久| 国产一区二区在线免费| 国产精品福利片| 日韩av中文字幕在线| 国产精品黄页免费高清在线观看| 久久精品2019中文字幕| 欧美一区二区三区精品电影| 国产精品久久久久久久久久久不卡| 国产精品免费观看在线| 欧美性20hd另类| 欧美性xxxxx极品娇小| 日韩精品视频在线播放| 欧美电影《睫毛膏》| 91精品国产高清久久久久久| 97在线免费视频| 中文字幕av日韩| 欧美一级视频免费在线观看| 久久99国产综合精品女同| 精品亚洲一区二区三区在线观看| 国产精品久久久久久久久免费| 国产成人精品在线观看| 日韩欧美国产一区二区| xvideos亚洲人网站| 国产精品美女午夜av| 91九色综合久久| 日韩av在线网页| 综合136福利视频在线| 欧美日韩国产限制| 日本国产一区二区三区| 色偷偷偷综合中文字幕;dd| 91亚洲国产成人精品性色| 亚洲欧美日韩一区二区在线| 国产精品色婷婷视频| 久久影院在线观看| 69视频在线免费观看| 国产成人a亚洲精品| 国产精品第100页| 午夜免费在线观看精品视频| 午夜精品一区二区三区视频免费看| 国产亚洲日本欧美韩国| 日韩在线视频中文字幕| 久久激情视频久久| 亚洲欧美中文日韩在线| 国产精品久久av| 久久久久久这里只有精品| 日日狠狠久久偷偷四色综合免费| 少妇高潮久久久久久潘金莲| 欧美成人免费全部| www.亚洲一二| 国产精品久久久久久久久久小说| 日韩av免费在线看| 欧美激情乱人伦一区| 亚州欧美日韩中文视频| 日韩av色在线| 7777kkkk成人观看| 欧美激情图片区| 亚洲精品白浆高清久久久久久| 亚洲最大av网| 欧美日韩亚洲一区二区三区| 91成人免费观看网站| 亚洲精品久久久久久下一站| 久久69精品久久久久久久电影好| 国产亚洲精品综合一区91| 中文字幕精品在线视频| 国产深夜精品福利| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲人成电影网站| 亚洲天堂av在线免费| 国产精品夫妻激情| 国产精品丝袜一区二区三区| 亚洲天堂av图片| 日韩黄色av网站| 久久久久久久久久久成人| 伊人亚洲福利一区二区三区| 欧美在线免费视频| 国模gogo一区二区大胆私拍| 97色在线播放视频| 福利二区91精品bt7086| 96国产粉嫩美女| 97人人模人人爽人人喊中文字| 国产精品爱久久久久久久| 国产精品久久久久秋霞鲁丝| 欧美有码在线观看| 国产91精品网站| 成人国产精品一区二区| 91网站免费观看| 中文字幕视频一区二区在线有码| 在线观看国产精品淫| 色爱精品视频一区| 夜夜嗨av色一区二区不卡| 亚洲一二三在线| 欧美激情xxxxx| 亚洲一区二区三区在线视频| 亚洲日本中文字幕免费在线不卡| 国精产品一区一区三区有限在线| 自拍亚洲一区欧美另类| 久久久久免费视频| 黄色精品一区二区| 日韩在线视频观看| 国产精品丝袜久久久久久高清| 久热99视频在线观看| 中文字幕亚洲一区二区三区五十路| 欧美成人免费全部| 欧美日韩国产综合新一区| 欧美午夜精品在线| 欧美激情精品久久久久久蜜臀|