共用方式為


使用 匯入資料 __declspec(dllimport)

如果是資料,使用 __declspec(dllimport) 是一個便利專案,可移除一層間接取值。 當您從 DLL 匯入資料時,您仍然需要通過匯入位址表。 在 之前 __declspec(dllimport) ,這表示您在存取從 DLL 匯出的資料時,必須記得執行額外的間接存取:

// project.h
// Define PROJECT_EXPORTS when building your DLL
#ifdef PROJECT_EXPORTS   // If accessing the data from inside the DLL
   ULONG ulDataInDll;

#else         // If accessing the data from outside the DLL
   ULONG *ulDataInDll;
#endif

接著,您會在 中匯出資料。DEF 檔案:

// project.def
LIBRARY project
EXPORTS
   ulDataInDll   CONSTANT

並在 DLL 外部存取它:

if (*ulDataInDll == 0L)
{
   // Do stuff here
}

當您將資料標示為 __declspec(dllimport) 時,編譯器會自動為您產生間接程式碼。 您不再需要擔心上述步驟。 如先前所述,在建置 DLL 時,請勿在 __declspec(dllimport) 資料上使用宣告。 DLL 內的函式不會使用匯入位址表來存取資料物件;因此,您不會有額外的間接存取層級。

若要從 DLL 自動匯出資料,請使用下列宣告:

// project.h
// Define PROJECT_EXPORTS when building your DLL
#ifdef PROJECT_EXPORTS   // If accessing the data from inside the DLL
   __declspec(dllexport) ULONG ulDataInDLL;

#else         // If accessing the data from outside the DLL
   __declspec(dllimport) ULONG ulDataInDLL;
#endif

另請參閱

匯入至應用程式