模組定義檔案(.def)
模組定義檔案是一個有著.def副檔名的文字檔案。它被用於匯出一個DLL的函式,和__declspec(dllexport)很相似,但是.def檔案並不是Microsoft定義的。一個.def檔案中只有兩個必需的部分:LIBRARY 和 EXPORTS。讓我們先看一個基本的.def檔案稍後我將解析之。
LIBRARY dll_tutorial
DESCRIPTION "our simple DLL"
EXPORTS
Add @1
Function @2
第一行,""LIBRARY""是一個必需的部分。它告訴連結器(linker)如何命名你的DLL。下面被標識為""DESCRIPTION""的部分並不是必需的,但是我喜歡把它放進去。該語句將字串寫入 .rdata 節[據 MSDN],它告訴人們誰可能使用這個DLL,這個DLL做什麼或它為了什麼(存在)。再下面的部分標識為""EXPORTS""是另一個必需的部分;這個部分使得該函式可以被其它應用程式訪問到並且它建立一個匯入庫。當你生成這個專案時,不僅是一個.dll檔案被建立,而且一個副檔名為.lib的匯出庫也被建立了。除了前面的部分以外,這裡還有其它四個部分標識為:NAME, STACKSIZE, SECTIONS, 和 VERSION。我將不再在本文中涉及這些內容,但是如果你在Internet上搜索,我想你將找到一些東西(譯註: MSDN2003上對模板定義檔案各部分內容有詳盡解釋,請參閱)。另外,一個分號(;)開始一個註解
模組定義檔案(.def)
模組定義檔案是一個有著.def副檔名的文字檔案。它被用於匯出一個DLL的函式,和__declspec(dllexport)很相似,但是.def檔案並不是Microsoft定義的。一個.def檔案中只有兩個必需的部分:LIBRARY 和 EXPORTS。讓我們先看一個基本的.def檔案稍後我將解析之。
LIBRARY dll_tutorial
DESCRIPTION "our simple DLL"
EXPORTS
Add @1
Function @2
第一行,""LIBRARY""是一個必需的部分。它告訴連結器(linker)如何命名你的DLL。下面被標識為""DESCRIPTION""的部分並不是必需的,但是我喜歡把它放進去。該語句將字串寫入 .rdata 節[據 MSDN],它告訴人們誰可能使用這個DLL,這個DLL做什麼或它為了什麼(存在)。再下面的部分標識為""EXPORTS""是另一個必需的部分;這個部分使得該函式可以被其它應用程式訪問到並且它建立一個匯入庫。當你生成這個專案時,不僅是一個.dll檔案被建立,而且一個副檔名為.lib的匯出庫也被建立了。除了前面的部分以外,這裡還有其它四個部分標識為:NAME, STACKSIZE, SECTIONS, 和 VERSION。我將不再在本文中涉及這些內容,但是如果你在Internet上搜索,我想你將找到一些東西(譯註: MSDN2003上對模板定義檔案各部分內容有詳盡解釋,請參閱)。另外,一個分號(;)開始一個註解