匯入和匯出
您可以使用兩種方法,將公用符號匯入應用程式,或從 DLL 匯出函式:
建置 DLL 時,請使用模組定義 (.def) 檔案
在主要應用程式中使用 關鍵詞
__declspec(dllimport)
或__declspec(dllexport)
函式定義
使用 .def 檔案
module-definition (.def) 檔案是一個文本檔,其中包含一或多個模組語句,描述 DLL 的各種屬性。 如果您不使用 __declspec(dllimport)
或 __declspec(dllexport)
匯出 DLL 的函式,DLL 需要 .def 檔案。
您可以使用 .def 檔案匯 入應用程式 ,或 從 DLL 匯出。
使用__declspec
您不需要 __declspec(dllimport)
針對程式代碼正確編譯,但這樣做可讓編譯程式產生更好的程序代碼。 編譯程式能夠產生更好的程式代碼,因為它可以判斷函式是否存在於 DLL 中,這可讓編譯程式產生略過通常存在於跨越 DLL 界限之函式呼叫中之間接存取層級的程式代碼。 不過,您必須使用 __declspec(dllimport)
來匯入 DLL 中使用的變數。
不需要使用適當的 .def 檔案 EXPORTS 區段 __declspec(dllexport)
。 __declspec(dllexport)
已新增 ,可讓您輕鬆地從.exe或.dll檔案匯出函式,而不使用 .def 檔案。
Win32 可攜式可執行檔格式的設計目的是將必須接觸的頁面數目降到最低,以修正匯入。 若要這樣做,它會將所有程序的匯入位址放在稱為匯入位址表的一個位置。 這可讓載入器在存取這些匯入時,只修改一或兩個頁面。