DLL中導出全局變量


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) 方式導入的是全局變量本身,而不再是其地址了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM