使用 __declspec(dllimport) 匯入至應用程式
更新:2007 年 11 月
使用 DLL 定義的公用符號之程式可以匯入這些符號。在建立使用您的 DLL 所建置的應用程式標頭檔時,請在公用符號的宣告上使用 __declspec(dllimport)。無論您是使用 .def 檔或 __declspec(dllexport) 關鍵字來匯出,關鍵字 __declspec(dllimport) 都可以使用。
若要使程式碼更好讀取,請定義 __declspec(dllimport) 的巨集,接著再使用這個巨集來宣告每個匯入符號:
#define DllImport __declspec( dllimport )
DllImport int j;
DllImport void func();
__declspec(dllimport) 在函式宣告上是可選擇性地使用,但是如果您使用了這個關鍵字,編譯器會產生更有效率的程式碼。然而,為了要讓匯入 DLL 的可執行檔可以存取 DLL 的公用資料符號和物件,您必須使用 __declspec(dllimport)。請注意,您的 DLL 的使用者仍然需要連結到匯入程式庫。
您可以對 DLL 和用戶端應用程式使用相同的標頭檔。若要進行這項作業,請使用特殊的前置處理器符號,指示您要建置 DLL 或建置用戶端應用程式。例如:
#ifdef _EXPORTING
#define CLASS_DECLSPEC __declspec(dllexport)
#else
#define CLASS_DECLSPEC __declspec(dllimport)
#endif
class CLASS_DECLSPEC CExampleA : public CObject
{ ... class definition ... };