我使用__declspec(dllexport)从dll导出一个全局变量,并使用__declspec(dllimport)在客户端exe中导入它。
dll中的全局变量正在一个单独的线程中随时间更新。我想在我的客户端.exe中收到这个更新的数据,但我没有得到它。我每次使用客户端exe中的计时器读取数据时,得到的是全局变量的唯一初始值。
这种行为的解释是什么?我能做些什么来实现我想要达到的目标?是否有一个选项,不包括来自dll的get()和set()导出函数?
以下是从dll导出的代码:
typedef struct{
int iTotalQueues;
int iCurrentQueue;
wchar_t szQueueName[100];
}UPDATE_STATUS_DATA;
__declspec(dllexport) UPDATE_STATUS_DATA UpdateStatusData;
此结构成员在循环中更新很长时间。更新代码在dll本身。
以下是exe:
中导入的代码typedef struct{
int iTotalQueues;
int iCurrentQueue;
wchar_t szQueueName[100];
}UPDATE_STATUS_DATA;
__declspec(dllimport) UPDATE_STATUS_DATA UpdateStatusData;
我正在计时器响应中读取此数据,而不是获取更新的值。
答案 0 :(得分:0)
您的问题中的代码,正如您在构建一个简单的测试项目时所期望的那样。所以,这里有两个我可以编写的解释:
UpdateStatusData
副本。因此,DLL中所做的UpdateStatusData
值的更改不会反映在副本中。