Windows 从dll导入的全局变量未更新

Windows 从dll导入的全局变量未更新,windows,winapi,dll,Windows,Winapi,Dll,我正在使用u declspec(dllexport)从dll导出全局变量,并使用u declspec(dllimport)在客户端exe中导入相同的变量 dll中的全局变量将在单独的线程中随时间更新。我想在我的client.exe中接收此更新的数据,但我无法获取它。每次使用客户端exe中的计时器读取数据时,我得到的是全局变量的唯一初始值 对这种行为的解释是什么?我能做些什么来实现我想要实现的目标?是否有不包含从dll导出的get()和set()函数的选项 以下是从dll导出的代码: typede

我正在使用u declspec(dllexport)从dll导出全局变量,并使用u declspec(dllimport)在客户端exe中导入相同的变量

dll中的全局变量将在单独的线程中随时间更新。我想在我的client.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;

我在计时器响应中读取这些数据,但没有得到更新的值。

问题中的代码,正如您在构建简单测试项目时所期望的那样。因此,以下是我可以编造的两种解释:

  • 您正在可执行文件中复制
    UpdateStatusData
    。因此,在DLL中对
    UpdateStatusData
    的值所做的更改不会反映在副本中
  • 由于某种原因,您的DLL没有修改结构