首页 文章

来自dll的导入的全局变量未更新

提问于
浏览
0

我使用__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;

我正在计时器响应中读取此数据,而不是获取更新的值 .

1 回答

  • 0

    当你构建一个简单的测试项目时,你的问题中的代码就像你期望的那样 . 所以,这里有两个我可以编写的解释:

    • 您正在执行可执行文件中的 UpdateStatusData 副本 . 因此,DLL中所做的 UpdateStatusData 值的更改不会反映在副本中 .

    • 由于某种原因,您的DLL不会修改结构 .

相关问题