访问dll中的全局变量

her*_*sen 1 c windows dll global-variables

如何访问在dll中我的应用程序的main()函数中初始化的全局变量?

我的全局变量包含一个临界区对象,我需要锁定一个dll.

我试图在我的应用程序中导出它并使用它在dll中导入它

__declspec(dllexport)并且__declspec(dllimport) 但是当我试图锁定关键节,我收到了runtine例外,这让我觉得我的dll访问变量未正确初始化.

使用LoadLibrary在运行时加载dll.

任何提示将不胜感激.

cas*_*nca 6

通常,DLL中的变量是从应用程序访问的,但看起来你正试图以相反的方式进行操作.你从DLL中导出应用程序和导入的方式似乎有点过时了.

如何在DLL中创建一个函数,该函数从应用程序中获取指向临界区对象的指针并将其存储在DLL自己的全局变量中?

DLL:

CRITICAL_SECTION *gCS;

__declspec(dllexport) void MyDLL_SetCS(CRITICAL_SECTION *cs) {
  gCS = cs;
}
Run Code Online (Sandbox Code Playgroud)

应用:

CRITICAL_SECTION cs;
// initialize cs here
MyDLL_SetCS(&cs);
Run Code Online (Sandbox Code Playgroud)

然后,DLL可以在需要时使用自己的指针副本.