Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
由多个DLL访问的C文件中的全局变量_C_Windows_Dll_Dllexport - Fatal编程技术网

由多个DLL访问的C文件中的全局变量

由多个DLL访问的C文件中的全局变量,c,windows,dll,dllexport,C,Windows,Dll,Dllexport,我正在使用一个包含多个DLL的C windows应用程序。第一个DLL定义多个函数使用的全局变量。第二个dll有一个方法调用第一个dll中的函数,而第一个dll又访问该全局变量 当我从第一个dll访问全局变量时,一切正常,但当从第二个dll发出的调用访问全局变量时,我得到以下错误: a.exe中发生类型为“System.AccessViolationException”的未处理异常 其他信息:尝试读取或写入受保护内存。这通常表示其他内存已损坏 注意:第二个变量中的函数都不会直接访问该全局变量。它

我正在使用一个包含多个DLL的C windows应用程序。第一个DLL定义多个函数使用的全局变量。第二个dll有一个方法调用第一个dll中的函数,而第一个dll又访问该全局变量

当我从第一个dll访问全局变量时,一切正常,但当从第二个dll发出的调用访问全局变量时,我得到以下错误:

a.exe中发生类型为“System.AccessViolationException”的未处理异常 其他信息:尝试读取或写入受保护内存。这通常表示其他内存已损坏

注意:第二个变量中的函数都不会直接访问该全局变量。它将仅通过第一个dll中的调用实现

我曾尝试通过.DEF文件导出变量,然后在第二个dll中用“_declspec(dllimport)”定义变量,但没有成功(我没想到会成功,因为第二个dll没有显式访问变量)

有人知道我如何解决这个问题吗。

谢谢

您确定是变量的访问导致了崩溃,而不是其他问题,比如不匹配的调用约定或其他问题吗?如果您注释掉实际使用此变量的代码行会发生什么情况?我起初认为调用约定问题可能是问题的一部分,但我不相信代码会uld链接(如果是)。如果我注释掉该行,它将继续,不会出现问题。Jonathan,谢谢你的帮助。我最终意识到问题与定义了两个全局变量实例有关。一些代码路径使用了正确定义的一个,另一个使用了未定义的版本。