DLL的模組定義檔案( DEF)

2021-04-13 22:40:16 字數 911 閱讀 8671

動態連線庫函式或者成員的匯出可以用

_declspec(dllexport)來實現,比如為了匯出void sayhello()函式,則在dll檔案中這麼宣告(或者定義):

_declspec(dllexport) void sayhello();

也可以不用_declspec(dllexport),而採用.def檔案來說明要匯出的函式或成員:

.def檔案的格式:

library abc //abc為.dll檔案的名字,也就是dll工程的名字

exports

sayhello @1

這樣,就從abc.dll檔案中匯出了sayhello這個函式,

後面的那個"@1"的含義為:

從動態連線庫檔案中匯出的函式或者成員可以用名字來標識,也可以用序號來表示,一般情況下用名字來標識,序號由系統來設定,但是也可以用"@1"的格式來自己定義,表示sayhello函式的序號為1

不想使用__declspec(dllexport)而單獨使用.def檔案匯出類,不知道如何實現? 1,把你要從dll輸出的每個類,都設計乙個基類,這是個純虛,即所有函式都是「virtual...=0;」的。把這些寫成乙個.h;   

2,把dll裡的類都從相應的基類派生,並實現每乙個純虛函式。並給dll設計乙個可動態匯出的函式,這個函式裡    return    new    c***indll;   

3,在呼叫dll的程式裡定義純虛基類的指標,並賦予第二步返回的值。   

現在可以動態載入、呼叫dll裡的類了。看看com原理,你就有啟發了。熟練了後會發現這個方法在小型應用裡非常有效!(在大型應用裡,由於缺乏生存期控制,所以不安全)   

需要補充的是:需要為每個類增加定義乙個release函式,函式裡delete    this,不要在呼叫dll的程式裡直接delete從第二步獲得的指標。 

模組定義檔案 def

msdn中的名詞解釋 模組定義 def 檔案為鏈結器提供有關被鏈結程式的匯出 屬性及其他方面的資訊。生成 dll 時,def檔案最有用。由於存在可代替模組定義語句使用的 鏈結器選項 通常不需要 def 檔案。也可以將 declspec dllexport 用作指定匯出函式的手段。在鏈結器階段可以使用...

模組定義 def 檔案說明

msdn中的名詞解釋 模組定義 def 檔案為鏈結器提供有關被鏈結程式的匯出 屬性及其他方面的資訊。生成 dll 時,def 檔案最有用。由於存在可代替模組定義語句使用的 鏈結器選項 通常不需要 def 檔案。也可以將 declspec dllexport 用作指定匯出函式的手段。在鏈結器階段可以使...

Dll 庫 DEF檔案詳解

dll中匯出函式的宣告有兩種方式 1 為在函式宣告中加上 declspec dllexport 這裡不再舉例說明 2 是採用模組定義 def 檔案宣告,def檔案為鏈結器提供了有關被鏈結程式的匯出 屬性及其他方面的資訊。首先建立 乙個dll程式,cpp中 int stdcall add int nu...