共用方式為


使用 __declspec(dllexport) 從 DLL 匯出

您可以使用 關鍵字,從 DLL __declspec(dllexport) 匯出資料、函式、類別或類別成員函式。 __declspec(dllexport) 將 export 指示詞新增至物件檔,因此您不需要使用 .def 檔案。

嘗試匯出裝飾的 C++ 函式名稱時,此便利性最為明顯。 因為名稱裝飾沒有標準規格,匯出函式的名稱可能會在編譯器版本之間變更。 如果您使用 __declspec(dllexport) ,則必須重新編譯 DLL 和相依的 .exe 檔案,才能考慮任何命名慣例變更。

許多匯出指示詞,例如序數、NONAME 和 PRI加值稅E,只能在 .def 檔案中建立,而且沒有 .def 檔案即可指定這些屬性。 不過,除了使用 .def 檔案之外,使用 __declspec(dllexport) 也不會造成建置錯誤。

若要匯出函式,如果指定關鍵字, __declspec(dllexport) 關鍵字必須出現在呼叫慣例關鍵字的左邊。 例如:

__declspec(dllexport) void __cdecl Function1(void);

若要匯出類別中的所有公用資料成員和成員函式,關鍵字必須出現在類別名稱的左邊,如下所示:

class __declspec(dllexport) CExampleExport : public CObject
{ ... class definition ... };

注意

__declspec(dllexport) 無法套用至具有呼叫慣例的 __clrcall 函式。

建置 DLL 時,您通常會建立標頭檔,其中包含您要匯出的函式原型和/或類別,並將其新增 __declspec(dllexport) 至標頭檔中的宣告。 若要讓您的程式碼更容易閱讀,請定義 宏, __declspec(dllexport) 並將宏與您要匯出的每個符號搭配使用:

#define DllExport   __declspec( dllexport )

__declspec(dllexport) 會將函式名稱儲存在 DLL 的匯出資料表中。 如果您想要優化資料表的大小,請參閱 依序數而非依名稱 從 DLL 匯出函式。

您想要做什麼事?

您還想知道關於哪些方面的詳細資訊?

另請參閱

從 DLL 匯出