【发布时间】:2013-04-10 05:11:18
【问题描述】:
我正在使用 __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;
我正在计时器响应中读取此数据,但没有获得更新的值。
【问题讨论】: