1. DEF文件
1 EXPORTS 2 3 g_nTest DATA ;導出全局變量 4 5 GetGlobalVar ;導出函數
2. 調用
1 extern int g_nTest; //聲明 2 3 int main(int argc, char *argv[]) 4 { 5 *(int*)g_nTest = 1; //注意前面的轉換 6 7 return 0; 8 }
需要注意的是用 extern int g_nTest 聲明所導入的並不是DLL中全局變量本身,而是其地址,應用程序必須通過強制指針轉換來使用DLL中的全局變量。這一點,從
*(int*)g_nTest 可以看出。
3. 更好的調用
1 extern int _declspec(dllimport) g_nTest; //用_declspec(dllimport)導入 2 int main(int argc, char *argv[]) 3 { 4 g_nTest = 1; //可以直接使用, 無須進行轉換 5 6 return 0; 7 }
通過 _declspec(dllimport) 方式導入的是全局變量本身,而不再是其地址了。