動態鏈結庫的建立

2021-06-19 05:45:37 字數 1870 閱讀 7371

動態鏈結庫的建立

fangyukuan

2010.6.20

編寫dll時的函式與一般的函式方法基本一樣。但要對庫中的函式進行必要的宣告,以說明哪些函式是可以匯出的,哪些函式是不可以匯出的。

把dll中的函式宣告為匯出函式的方法有兩種:

一是使用關鍵字

_declspec(dllexport)

來宣告。

二是在.def

檔案中宣告。

一、使用關鍵字

_declspec(dllexport)

來宣告匯出函式

宣告函式sayhello為匯出函式語句為:int _declspec(dllexport) sayhello ();

為了使乙個用c++語言編寫的dll函式可以在c語言編寫的應用程式中使用,在關鍵字_declspec(dllexport)  之前要附加另乙個關鍵字:extern 「c」

,以通知編譯器採用

c鏈結方式。

例子:(用vs2008寫的例子)

新建乙個工程。

選擇win32 project,工程名字為1_dlldemo。確定。

選擇dll其它預設。

在檔案1_dlldemo.cpp編寫**如下:

extern

"c"__declspec(dllexport) void

sayhello()

else

system("pause");

return 0;}

按f7編譯。再按f5執行。結果如下。

二、使用

def檔案宣告匯出函式

a)       library語句,指出

dll的名字,鏈結器將把這個名字放到dll庫中。

b)       exports語句,列出庫中匯出函式的名稱及匯出函式的序號(可選)。

c)       discripion語句,該語句用來描述

dll的用途等說明。

可以在def檔案分號「;」後面書寫注釋語句。

.exp

)和乙個導入庫檔案(

.lib

),然後使用匯出檔案再建立dll檔案。

外部應用程式使用的檔案是導入庫檔案和dll

檔案。由於在導入庫檔案中存放了外部應用程式可匯入的dll匯出函式名稱列表,因此外部應用程式需要把它連線在應用程式中,才能以它為索引到dll中去找到要呼叫的匯出函式。也就是說,導入庫檔案相當於是dll可提供的服務專案表。

例子:(用vs2008寫的例子)

方法同上面一樣新建乙個dll工程。

在檔案2_dlldemo.cpp編寫**如下:

void

sayhello()

{::messageboxw(null, l

"2_dlldemo::hello", l

"fangyukuan", mb_ok);

然後再新建乙個def檔案。

在工程右鍵->add->new item…

在def檔案編寫如下**:

library    "2_dlldemo"

exports

sayhello

按f7編譯完成。

測試方法同上面例子一樣。

建立靜態鏈結庫 動態鏈結庫

下面的實操中的動態庫或者靜態庫名都用wujunwu 第一步 建立乙個源 建立靜態鏈結庫的源 include void func1 void int func2 int x,int y 第二步 建立乙個.件作為函式宣告 void func1 void intfunc2 int x,int y 第三步 ...

建立動態鏈結庫

要建立dll,就必須首先建立乙個或多個源 檔案,還有乙個連線檔案用來匯出函式。如果打算可以以載入時動態鏈結使用dll的話,還必須建立乙個導入庫。建立原始檔 dll的源 中包含了需匯出的函式及資料,還有內部函式及資料,另外可以有乙個可選的入口函式。你可以使用任意支援建立基於windows的dll工具來...

建立動態鏈結庫

要建立dll,就必須首先建立乙個或多個源 檔案,還有乙個連線檔案用來匯出函式。如果打算可以以載入時動態鏈結使用dll的話,還必須建立乙個導入庫。建立原始檔 dll的源 中包含了需匯出的函式及資料,還有內部函式及資料,另外可以有乙個可選的入口函式。你可以使用任意支援建立基於windows的dll工具來...