如何在 dll 中访问在我的应用程序的 main() 函数中初始化的全局变量?
我的全局变量包含一个关键部分对象,我需要将其锁定在一个 dll 中。
我已经尝试在我的应用程序中导出它并使用它在 dll 中导入
__declspec(dllexport)
和 __declspec(dllimport)
但是当我尝试锁定关键部分时,我得到一个运行异常,这让我认为我的 dll 访问的变量没有正确初始化。
dll 在运行时使用 LoadLibrary 加载。
如有任何提示,我们将不胜感激。
最佳答案
通常从应用程序访问 DLL 中的变量,但看起来您正试图以相反的方式进行访问。而且您从应用程序导出并在 DLL 中导入的方式似乎有点老套。
如何在您的 DLL 中创建一个函数,该函数从您的应用程序中获取指向临界区对象的指针并将其存储在 DLL 自己的全局变量中?
动态链接库:
CRITICAL_SECTION *gCS;
__declspec(dllexport) void MyDLL_SetCS(CRITICAL_SECTION *cs) {
gCS = cs;
}
应用:
CRITICAL_SECTION cs;
// initialize cs here
MyDLL_SetCS(&cs);
然后 DLL 可以在需要时使用它自己的指针副本。
关于c - 访问dll中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4451920/