狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統之家 > 技術開發教程 > 詳細頁面

如何運用C#創建與調用DLL

如何運用C#創建與調用DLL

更新時間:2019-05-03 文章作者:未知 信息來源:網絡 閱讀次數:

一、寫在前面
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 庫類的機制。可以從現有 MFC 類派生類,并將它們放到 MFC 擴展 DLL 中供 MFC 應用程序使用。
使國際版本的創建輕松完成。通過將資源放到 DLL 中,創建應用程序的國際版本變得容易得多。可將用于應用程序的每個語言版本的字符串放到單獨的 DLL 資源文件中,并使不同的語言版本加載合適的資源。
使用 DLL 的一個潛在缺點是應用程序不是獨立的;它取決于是否存在單獨的 DLL 模塊。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
久久久久一区二区三区| 成人精品gif动图一区| 免费观看日韩av| 亚洲区第一页| 亚洲国产电影在线观看| 成人一区二区三区在线观看| 免费在线观看一区二区| 成人免费在线观看入口| 国产成人日日夜夜| 日韩一区二区在线免费观看| 秋霞午夜鲁丝一区二区老狼| 欧美亚洲一区| 亚洲精品中文字幕乱码三区| 成人天堂资源www在线| 亚洲成va人在线观看| 欧美丰满美乳xxx高潮www| 亚洲天堂黄色| 欧美成人蜜桃| 国产成人午夜片在线观看高清观看| 亚洲日本丝袜连裤袜办公室| 精品国产三级电影在线观看| 91九色最新地址| 在线亚洲自拍| 久久久亚洲综合| 久久综合一区| 午夜日韩视频| 国产999精品久久久久久绿帽| 亚洲精品免费在线观看| 亚洲最新在线| 一级成人国产| 老牛国产精品一区的观看方式| 国产精品夜夜嗨| 一个色在线综合| 日韩精品一区二区三区在线观看| 成人精品亚洲人成在线| 性伦欧美刺激片在线观看| 亚洲午夜免费电影| 欧美激情日韩| 天堂午夜影视日韩欧美一区二区| 在线一区二区三区| 福利一区福利二区| 日本一区二区综合亚洲| 中文国产一区| 国产精品一区二区三区乱码| 中文一区在线播放| 五月天激情综合网| 色综合久久天天| 9久草视频在线视频精品| 亚洲精品欧美精品| 国产精品国产精品国产专区不片 | 蜜臀av性久久久久蜜臀av麻豆| 欧美xingq一区二区| 国内一区二区在线视频观看| 精品国产污污免费网站入口 | 亚洲欧美日韩另类精品一区二区三区| 欧美欧美午夜aⅴ在线观看| 免费高清在线视频一区·| 亚洲精品一区在线观看| 久久一区二区三区四区五区| 国产成人精品免费在线| 国产一区二区在线观看免费播放| 奇米888四色在线精品| 国产清纯美女被跳蛋高潮一区二区久久w| 免费不卡亚洲欧美| 欧美日韩国产不卡在线看| 国产一区二区三区日韩| 欧美大片在线观看一区二区| 免费亚洲一区二区| 欧美日本一区二区视频在线观看| 午夜电影亚洲| 国产精品一线二线三线| 亚洲一区欧美一区| 日本一区二区三级电影在线观看| 欧美日韩视频在线第一区 | 国外成人免费视频| 99久久99精品久久久久久| 免费人成黄页网站在线一区二区| 亚洲天堂网中文字| 国产日韩欧美激情| 精品国产欧美一区二区| 4438x亚洲最大成人网| 免费在线亚洲欧美| 午夜在线一区| 亚洲国产日本| 亚洲精品乱码久久久久久蜜桃麻豆 | 亚洲大胆av| 国产亚洲网站| 中文字幕不卡在线播放| 欧美日韩一区二| caoporn国产一区二区| 国产91精品精华液一区二区三区| 亚洲成人精品一区| 欧美日韩免费高清| 你懂的视频一区二区| 丰满亚洲少妇av| av高清不卡在线| 91美女视频网站| 国产精品99一区二区| 精品成人国产| 亚洲一区二区在线看| 午夜亚洲视频| 欧美色国产精品| 91精品国产全国免费观看| 这里只有精品电影| 色久优优欧美色久优优| 91久久黄色| 国产精品系列在线观看| 亚洲国产三级在线| 天堂资源在线中文精品| 日本中文字幕一区二区视频 | 亚洲精品日本| 亚洲日韩视频| 色哟哟亚洲精品| 精品久久一区二区| 国产精品福利在线播放| 日本欧美在线观看| 成人免费毛片aaaaa**| 色综合中文字幕国产| 亚洲精品偷拍| 国产精品久久久久久户外露出| 久久综合九色综合欧美就去吻| 中文字幕精品一区二区精品绿巨人 | 亚洲天堂免费看| 黑人巨大精品欧美一区| 欧美日韩免费| 欧美日韩美女一区二区| 日韩欧美在线123| 亚洲人吸女人奶水| 国内精品写真在线观看| 国产亚洲欧美日韩日本| 国产精品二区一区二区aⅴ污介绍| 日韩1区2区日韩1区2区| 国产精品日本| 欧美精品一区二区在线播放| 一区二区三区中文字幕在线观看| 看电影不卡的网站| aa国产精品| 国产欧美视频一区二区| 日韩精品欧美成人高清一区二区| 国产激情一区二区三区| 一区二区精品在线| 国产三级欧美三级日产三级99 | 欧美不卡在线视频| 一区二区三区在线视频观看58| 狠狠色丁香久久婷婷综合丁香| 亚洲巨乳在线| 国产精品久久三区| 成人性生交大片免费看中文| 一本不卡影院| 中文av一区特黄| 91精品国产91久久综合桃花 | 亚洲香蕉网站| 国产精品毛片无遮挡高清| 国产激情精品久久久第一区二区| 亚洲国产成人午夜在线一区| 亚洲卡通动漫在线| 亚洲性色视频| 亚洲精品一区二区在线观看| 国产在线精品一区二区| 久久美女性网| 精品欧美久久久| aaa欧美色吧激情视频| 日韩欧美一二区| 成人app网站| 精品88久久久久88久久久| 风间由美一区二区av101| 精品国产精品一区二区夜夜嗨| 粉嫩av亚洲一区二区图片| 欧美精品色一区二区三区| 国产一区二区三区精品视频| 欧美日韩国产综合久久| 美女www一区二区| 国产成人无遮挡在线视频| 欧美日韩极品在线观看一区| 免费视频一区二区| 欧美日韩免费一区二区三区视频| 日韩av中文字幕一区二区| 欧美中文字幕一二三区视频| 蜜臀久久99精品久久久久宅男| 一本色道久久综合狠狠躁的推荐 | 色综合欧美在线视频区| 久久久久成人黄色影片| 亚洲精品一区二区三区蜜桃下载 | 免费国产一区二区| 美女任你摸久久| 678五月天丁香亚洲综合网| 成人av在线资源网站| 日本一区二区综合亚洲| 影音先锋国产精品| 丝袜诱惑亚洲看片| 在线不卡一区二区| 亚洲综合久久久久| 91久久久一线二线三线品牌| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美久久久久久久久久| 欧美日韩另类丝袜其他| 一区二区三区欧美日韩| 欧美久久久久久久久| 午夜欧美精品| 捆绑调教美女网站视频一区|