共用方式為


動態連結庫建立

若要建立動態連結庫 (DLL),您必須建立一或多個原始程式碼檔案,而且可能是用來匯出函式的連結器檔案。 如果您打算允許使用 DLL 的應用程式使用載入時間動態連結,則您也必須建立匯入連結庫。

建立原始程序檔

DLL 的來源檔案包含導出的函式和數據、內部函式和數據,以及 DLL 的選擇性 進入點函式 。 您可以使用任何支援建立 Windows 型 DLL 的開發工具。

如果您的 DLL 可能由多線程應用程式使用,則您應該讓 DLL 成為「安全線程」。 若要避免數據損毀,您必須同步存取所有 DLL 的全域數據。 您也必須確定您只連結具有安全線程的連結庫。 例如,Microsoft Visual C++ 包含多個 C 運行時間連結庫版本,其中一個不是安全線程,另一個是線程安全庫。

匯出函式

如何指定應該匯出 DLL 中的函式,取決於您用於開發的工具。 某些編譯程式可讓您使用函式宣告中的 修飾詞,直接在原始程式碼中匯出函式。 其他時候,您必須在傳遞至連結器的檔案中指定匯出。

例如,使用 Visual C++ 時,有兩種匯出 DLL 函式的可能方式:使用 __declspec(dllexport) 修飾詞或模組定義 (.def) 檔案。 如果您使用 __declspec(dllexport) 修飾詞,則不需要使用 .def 檔案。 如需詳細資訊,請參閱 從 DLL 匯出。

建立匯入連結庫

匯入連結庫 (.lib) 檔案包含連結器為了解析匯出 DLL 函式的外部參考而需要的資訊,讓系統可以在運行時間找出指定的 DLL 和導出的 DLL 函式。 當您建置 DLL 時,您可以建立 DLL 的匯入連結庫。

如需詳細資訊,請參閱 建置匯入連結庫和導出檔案

使用匯入連結庫

例如,若要呼叫 CreateWindow 函式,您必須將程式代碼連結至匯入連結庫 User32.lib 原因是 CreateWindow 位於名為 User32.dll的系統 DLL 中,而 User32.lib 是匯入連結庫,用來解析程式代碼中的呼叫,以在 中 User32.dll導出的函式。 鏈接器會建立數據表,其中包含每個函式呼叫的位址。 載入 DLL 時,將會修正 DLL 中函式的呼叫。 當系統正在初始化進程時,它會載入 User32.dll ,因為進程相依於該 DLL 中的匯出函式,並更新函式位址表中的專案。 對 CreateWindow 的所有呼叫都會叫用從 User32.dll導出的函式。

如需詳細資訊,請參閱 將可執行文件連結至 DLL