動態鏈結庫的建立
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工具來...