VS2015動態庫程式設計之匯出變數
本文章相關視訊教程下載地址http://pan.baidu.com/s/1slK2Hat
在動態庫中定義的全域性變數,可以在呼叫該動態庫的程式中進行訪問和修改。
1 在動態庫中定義匯出變數
在“VS2015動態庫之入口函式”中建立的DLL程式的基礎上,新增匯出變數。
1.1 全域性變數的定義
在dllmain.cpp原始檔的起始位置處定義一個全域性變數
unsigned int dllGlobalVar = 0;
1.2 全域性變數的賦值
在dllMain()入口函式中,對其進行賦值:
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
dllGlobalVar = 100;
std::cout << "DLL_PROCESS_ATTACH.\n";
break;
1.3 全域性變數的匯出宣告
為程式新增一個名為DLL_Variant_Test.def的定義檔案,在該文將中將dllGlobalVar宣告為匯出變數
LIBRARY DLL_Variant_Test
EXPORTS
dllGlobalVar DATA
2 在呼叫動態庫的程式中使用該變數
在“VS2015動態庫之入口函式”中建立的呼叫動態庫程式的基礎上,新增對該變數的使用。
2.1 資料型別的定義
程式要訪問動態庫中的變數,即要獲取該變數在動態庫中的地址(指標)。dllGlobalVar的型別是
typedef unsigned int* PUINT;
2.2 變數地址的獲取
通過GetProcAddress()函式獲取該變數的地址
PUINT dllGlobalVar = (PUINT)GetProcAddress(hinstLib, "dllGlobalVar");
該行程式碼應該放在LoadLibrary()函式之後使用。
2.3 變數的訪問及修改
在獲取了dllGlobalVar變數的地址之後,可以直接對其進行訪問或者對其進行修改。
cout<<*dllGlobalVar;
*dllGlobalVar = 200;
cout<<*dllGlobalVar;
以上程式碼中,第一次輸出的值是100,第二次輸出的值是200。