由多个DLL访问的C文件中的全局变量
我正在使用一个包含多个DLL的C windows应用程序。第一个DLL定义多个函数使用的全局变量。第二个dll有一个方法调用第一个dll中的函数,而第一个dll又访问该全局变量 当我从第一个dll访问全局变量时,一切正常,但当从第二个dll发出的调用访问全局变量时,我得到以下错误: a.exe中发生类型为“System.AccessViolationException”的未处理异常 其他信息:尝试读取或写入受保护内存。这通常表示其他内存已损坏 注意:第二个变量中的函数都不会直接访问该全局变量。它将仅通过第一个dll中的调用实现 我曾尝试通过.DEF文件导出变量,然后在第二个dll中用“_declspec(dllimport)”定义变量,但没有成功(我没想到会成功,因为第二个dll没有显式访问变量) 有人知道我如何解决这个问题吗。由多个DLL访问的C文件中的全局变量,c,windows,dll,dllexport,C,Windows,Dll,Dllexport,我正在使用一个包含多个DLL的C windows应用程序。第一个DLL定义多个函数使用的全局变量。第二个dll有一个方法调用第一个dll中的函数,而第一个dll又访问该全局变量 当我从第一个dll访问全局变量时,一切正常,但当从第二个dll发出的调用访问全局变量时,我得到以下错误: a.exe中发生类型为“System.AccessViolationException”的未处理异常 其他信息:尝试读取或写入受保护内存。这通常表示其他内存已损坏 注意:第二个变量中的函数都不会直接访问该全局变量。它
谢谢您确定是变量的访问导致了崩溃,而不是其他问题,比如不匹配的调用约定或其他问题吗?如果您注释掉实际使用此变量的代码行会发生什么情况?我起初认为调用约定问题可能是问题的一部分,但我不相信代码会uld链接(如果是)。如果我注释掉该行,它将继续,不会出现问题。Jonathan,谢谢你的帮助。我最终意识到问题与定义了两个全局变量实例有关。一些代码路径使用了正确定义的一个,另一个使用了未定义的版本。