DLL匯出函式

2022-09-01 09:06:10 字數 722 閱讀 9129

使用def檔案從dll匯出

模組定義(.def)檔案時包含乙個或多個描述dll各種屬性的module語句的文字檔案。如果不使用_declspec(dllexport)關鍵字匯出dll的函式,則dll需要.def檔案。

.def檔案必須至少包含下列模組定義語句:

檔案中的第乙個語句必須是library語句。此語句將.def檔案標識為屬於dll。library語句的後面是dll的名稱。鏈結器將此名稱放到dll的導入庫中。

exports語句列出名稱,可能的話還會列出匯出函式的序號值。通過在函式名的後面加上@符和乙個數字,給函式分配序號值。當指定序號值時,序號值的範圍必須是從1到n,其中n是dll匯出函式的個數。如果希望按序號匯出函式,請參見按序號而不是按名稱從dll匯出函式及本主題。

如果使用mfc dll嚮導建立mfc dll,則嚮導將為您建立主幹.def檔案並將其自動新增到專案中。新增要匯出到此檔案的函式名。對於非mfc dll,必須親自建立.def檔案將其新增到專案中。

如果匯出c++檔案中的函式,必須將修飾名放到.def檔案中,或者通過使用外部「c」定義具有標準的c鏈結的匯出函式。如果需要將修飾名放到.def檔案中,則可以通過使用dumpbin工具/map鏈結器選項來獲取修飾名。請注意,編譯器產生的修飾名是編譯器特定的。如果將visual c++編譯器產生的修飾名放到.def檔案中,則鏈結到dll的應用程式必須也是用相同版本的visual c++生成的,這樣呼叫應用程式的修飾名才能與dll的.def檔案中的匯出名相匹配。

DLL匯出函式

經常使用vc6的dependency檢視dll匯出函式的名字,會發現有dll匯出函式的名字有時大不相同,導致不同的原因大多是和編譯dll時候指定dll匯出函式的界定符有關係。vc 支援兩種語言 即c c 這也是造成dll匯出函式差異的根源 我們用vs2008新建個dll工程,工程名為 testdll...

DLL匯出函式

dll匯出的函式 和 匯出類在呼叫時,有些區別,這裡暫時不講,直說簡單的匯出函式 include stdafx.h include mathdll.h pragma comment lib,mathdll.lib 你也可以在專案屬性中設定庫的鏈結 int main 在標頭檔案或是包含標頭檔案下面新增...

DLL匯出類和匯出函式

1 動態庫dll中的類或者函式有時候要被其他的庫呼叫,因此需要被其他庫呼叫的類或者函式需要進行匯出。2 首先編寫需要匯出的dll,新建乙個工程設定應用程式型別為dll 3 類的 如下 標頭檔案 pragma once define ex port declspec dllexport using n...