小熊維尼探險組之RFID專題大冒險

小熊維尼探險組之RFID專題大冒險
 
首頁首頁  ­相冊相冊  ­會員註冊會員註冊  ­登入登入  
搜尋
 
 

結果按:
 
Rechercher 進階搜尋
最新主題
» Information 類別 msdn
周五 4月 24, 2009 12:34 pm 由 peter770513

» 有關SOCKET
周二 12月 16, 2008 1:01 am 由 e19860911

» DLL相關文章
周四 12月 11, 2008 11:47 pm 由 e19860911

» 語音傳輸(簡體= =)
周四 12月 11, 2008 2:52 pm 由 sgdaibear

» 壓縮音樂檔
周三 12月 03, 2008 12:43 am 由 e19860911

» 如何取得MP3多媒體檔案播放長度
周二 12月 02, 2008 10:52 pm 由 e19860911

» C# 如何撥放 Wave 音效檔
周二 12月 02, 2008 10:50 pm 由 e19860911

» open source 網站 (音樂轉檔方面)
周日 11月 30, 2008 6:15 pm 由 vyretop140

» 11/18 開會紀錄 (請進)
周三 11月 26, 2008 4:10 pm 由 sgdaibear

導航
 歡迎頁
 首頁
 會員列表
 個人資料
 常見問題
 搜尋
版面
合作伙伴
免費論壇

免费论坛

分享 | 
 

 DLL相關文章

上一篇主題 下一篇主題 向下 
發表人內容
e19860911



文章數: 9
注冊日期: 2008-10-22

人物特征表
123:

發表主題: DLL相關文章   周四 12月 11, 2008 11:16 pm

HOW TO:建立和使用 C# DLL (C# 程式設計手冊)
回頂端 向下
檢視會員個人資料
e19860911



文章數: 9
注冊日期: 2008-10-22

人物特征表
123:

發表主題: 回復: DLL相關文章   周四 12月 11, 2008 11:29 pm

第一種方法:直接寫cs文件
如何利用C#創建和調用DLL <BR
文章類別:C#應用|發表日期:2003-12-30
——————————————————————————– <BR
baidu
一、寫在前面 <BR
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 = ij;
i = ij;
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(名稱空間)這對以後我們使用這兩個方法提供了方便。 當然他們也可以屬於不同的名稱空間,這是完全可以的,但只是在我們應用他們的時候就需要引用兩個不同的名稱空間,所以作者建議還是寫在一個名稱空間下面比較好。 <BR
接下來的任務是把這兩個cs文件變成我們需要的DLL文件。 方法是這樣的: <BR
在安裝了Microsoft.NET Framework的操作系統上,我們可以在Windows所在目錄下找到Microsoft.NET目錄。 在這個目錄下面提供了C#的編譯器,CSC.EXE <BR
運行:csc /target:library /out:MyDLL.DLL MySwap.cs MyMaxCD.cs <BR
完成後可在本目錄下面找到我們剛才生成的MyDLL.DLL文件 <BR
/target:library編譯器選項通知編譯器輸出DLL文件而不是EXE文件。 後跟文件名的/out編譯器選項用於指定DLL文件名。 <BR
如果/out後面不跟文件名編譯器使用第一個文件(MySwap.cs)作為DLL文件名。 生成的文件為MySwap.DLL文件 <BR
OK!我們創建動態鏈接庫文件的任務完成了,現在是我們享受勞動成果的時候了,下面我將介紹如何使用我們所創建的動態鏈接庫文件。
四、使用DLL
我們簡單寫一個小程序來測試一下我們剛才寫的兩個方法是否正確,好吧,跟我來: <BR
MyClient.cs <BR
using System;
using MyMethods;
//這裡我們引用剛才定義的名稱空間,如果剛才的兩個文件我們寫在兩個不同的名稱空間 <BR
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
<BR
第二種方法:用vs2005製作類庫
在新建裡選擇類型是類庫,呵呵,然後你就寫類啊,寫好後生成就就行,生成的dll在Debug文件夾里新建類庫編輯完畢後按運行後在bin\debug\目錄下就有一個此項目的DLL文件


e19860911 在 周五 12月 12, 2008 12:36 am 作了第 4 次修改
回頂端 向下
檢視會員個人資料
e19860911



文章數: 9
注冊日期: 2008-10-22

人物特征表
123:

發表主題: 回復: DLL相關文章   周四 12月 11, 2008 11:38 pm

^3^
回頂端 向下
檢視會員個人資料
e19860911



文章數: 9
注冊日期: 2008-10-22

人物特征表
123:

發表主題: 回復: DLL相關文章   周四 12月 11, 2008 11:47 pm

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

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

(1).創建一個DLL源代碼。 (1).創建一個DLL源代碼。

(2).編譯此DLL源代碼,生成DLL檔。 (2).編譯此DLL源代碼,生成DLL檔。

(3).用此DLL來創建一個簡單的用戶端程式。 (3).用此DLL來創建一個簡單的客戶端程式。

一. 程式設計開發及運行環境 : 一.程式設計開發及運行環境 :

(1).微軟視窗2000專業版 (1).微軟視窗2000專業版

(2)..Net FrameWork SDK Beta 2 (2)..Net FrameWork SDK Beta 2

二. 創建一個DLL源代碼(dll.cs) 二.創建一個DLL源代碼(dll.cs)

由於用Visual C#創建的DLL,此DLL是不需要執行的介面,所以在DLL檔就沒有必要定義Main ( )函數,來作為應用程式執行的入口。由於用Visual C#創建的DLL,此DLL是不需要執行的介面,所以在DLL檔就沒有必要定義Main ( )函數,來作為應用程式執行的入口。 Dll.cs的根源程式代碼如下: Dll.cs的根源程式代碼如下:

Dll.cs:

namespace Dll file://定義了名稱空間,在調用DLL的時候就要導入此名稱空間。
{
public class Show file://定義了一個類,在程式中就要來繼承此類。 public class Show file://定義了一個類,在程式中就要來繼承此類。
{
public string Messages ( ) public string Messages ( )
file://定義了一個方法,此方法的作用就是返回下面字串。 file://定義了一個方法,此方法的作用就是返回下面字串。
{
return "歡迎使用Visual C#做的DLL檔!" ; return "歡迎使用Visual C#做的DLL檔!" ;
}
}
}
通過此DLL的根源程式可以看出,此DLL表現為一個小型的類庫,這是因為在此DLL中封裝了名字叫DLL的名稱空間,在此名稱空間中又定義了一個Show類,在此類中有一個方法就是Messages。通過此DLL的根源程式可以看出,此DLL表現為一個小型的類庫,這是因為在此DLL中封裝了名字叫DLL的名稱空間,在此名稱空間中又定義了一個Show類,在此類中有一個方法就是Messages。 雖然定義的內容相對少了些,但卻相當完全。雖然定義的內容相對少了些,但卻相當完全。
三. 編譯此DLL源代碼,生成DLL檔 三.編譯此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文件:通過以下編譯命令可以得到mydll.dll文件:

Csc /r:system.dll /t:library /out:mydll.dll dll.cs
四. 用此DLL來創建一個簡單的用戶端程式(test.exe) 用此DLL來創建一個簡單的客戶端程式(test.exe)

通過以上的根源程式代碼可以看到生成的mydll.dll檔雖然是一個以DLL為副檔名,實際上是一個類庫,和我們經常用到的System.dll、System.Windows.Forms.dll等這些檔相似。通過以上的根源程式代碼可以看到生成的mydll.dll文件雖然是一個以DLL為擴展名,實際上是一個類庫,和我們經常用到的System.dll、System.Windows.Forms.dll等這些文件相似。 同樣用mydll.dll創建程式也和用以上這些類庫創建程式相類似。同樣用mydll.dll創建程式也和用以上這些類庫創建程式相類似。 就是第一步就是導入此名稱空間--Dll。就是第一步就是導入此名稱空間--Dll。 然後在去繼承裏面封裝好的類--Show,再調用類中定義好的方法--Messages。然後在去繼承裡面封裝好的類--Show,再調用類中定義好的方法--Messages。 下面就是按照以上的步驟,創建的用戶端的根源程式代碼( test.cs ) :下面就是按照以上的步驟,創建的客戶端的根源程式代碼( test.cs ) :

test.cs:
using Dll ; // 導入此名稱空間 using Dll ; //導入此名稱空間
using System ; using System ;

public class GetMessage public class GetMessage
{
public static void Main ( ) public static void Main ( )
{
Show hi = new Show ( ) ; // 繼承名稱空間中定義的Show類
Console.WriteLine ( hi.Messages ( ) ) ; // 調用此類中的方法
}
}
在把test.cs編譯成執行程式中,要在編譯命令中添加一個引用,就是引用mydll.dll文件。在把test.cs編譯成執行程式中,要在編譯命令中添加一個引用,就是引用mydll.dll文件。 具體的編譯命令如下:具體的編譯命令如下:

csc /r:mydll.dll /r:system.dll test.cs csc /r:mydll.dll /r:system.dll test.cs
編譯完成,就會生成test.exe。編譯完成,就會生成test.exe。
回頂端 向下
檢視會員個人資料
 

DLL相關文章

上一篇主題 下一篇主題 回頂端 
1頁(共1頁)

這個論壇的權限:無法 在這個版面回復文章
小熊維尼探險組之RFID專題大冒險 :: 問題討論-