acad.exe 中的 0x25c70fc2 (???.arx) 处最可能的异常: 0xC0000005: 读取位置 0x0000009c 时发生访问冲突
1.
修改了一个以前的arx程序,编译通过后,加载时出错,acad说它不是合法arx文件。但是因为还没走到DllMain(),所以vc也调试不了,不知道那里出错,毫无头绪。睡了一觉,觉得应该是全局变量或者类的静态成员初始化时出错。
到网上搜了一下,有篇文章还行:http://blog.csdn.net/xingzihe/article/details/9032789,为阅读方便,部分内容转帖如下:
Windows 进程一般放在 0x00400000 的地址,0x00400000 是所有版本的 Windows 能使用的最低地址,进程实例句柄的值总是和它的基地址相同,所有未被初始化的自动变量都会设上 0xCCCCCCCC。数值类似0xC0000005等,通常是debug模式下的未附值的指针(未初始化)。
稍微笔记一下上文:
0x00400000=4M=4x1024x1024=4x1048576=4194304, 1K=1024=0x400, 1M=1024x1024=0x100000
0xCCCCCCCC=0b11001100110011001100110011001100=3435973836
0xC0000005 =0b11000000000000000000000000000101=3221225477
和我的感觉一样,应该是指针越界访问或指针未初始化就使用这样的问题。最后果然是全局变量初始化顺序的问题,一个全局变量的初始化依赖了另一个全局变量的初始化,而c/c++中,不同编译单元的全局量的初始化顺序是没有保证的。稍作修改,果然重新运行起来了!
另外,初始化全局变量处也是可以下断点的。
折腾了好久,发现没有调试器的帮助,自己的脑子都僵住了,几乎不会解决问题了,哈
2.
新建了一个空的arx工程,编译加载都正常,属性 | 链接器 | 输入 | 附加依赖项 中加入了以前的一个arx的lib(并没有用到其中导出的变量或函数),编译通过但是加载不了了。
说是:???.arx 与此版本的 AutoCAD 不兼容。AcRxDynamicLinker加载"???.arx"失败。
研究了2天,是依赖的某个dll没找到?是某个调用的arx不兼容,是需要对某个arx使用linker delayload?等等。偶然发现,以前一个工程也是依赖了这个arx,一看,那儿是用了#pragma comment(lib, "???.lib"), 不是在工程的属性中设置在附加依赖项中。改用#pragma comment(lib, ...)果然成功加载。这两种引入库的方式有什么区别?不知道。
也有可能用附加依赖项的方式不行,是因为引入的这个.arx库不是用最兼容的vs版本编译的(vc2010, acad2012),没试验验证过是否如此。
3.
向一个arx工程中加入了一个类,编译通过,加载时说:
???.arx 无法找到所需的动态链接库或其他文件。
英文是:???.arx cannot find a dll or other file that it needs.
费了半天劲,确认所有用到的库中,除了windows和vc, win sdk自带的,都放在该???.arx同一个目录中了,应该不存在缺少dll或路径找不到的问题。有目的、无目的的修改、编译,加载,这种盲目的尝试了1天多。后来没什么招了,忽地想起网上看到有一个帖子说,用windbg能看到更多的信息,也不太抱希望,因为感觉又不是无源代码调试,vc的调试器,不会比windbg少什么信息。但是既然是盲目地试,也不在乎在试一下。用windbg环境下附加到acad.exe,加载???.arx居然成功了。这下知道基本上是因为acad.exe没找到???.arx所在目录下的另一个所依赖的arx。在acad的支持路径下加入该???.arx所在目录,果然加载成功。
奇怪的是,所有的dll和arx(除了windows和vc,win sdk自带的库)都放在一个目录下,而且之前加载其它dll时(都在与???.arx同一个目录下,没有子目录)也没有指定acad的支持文件路径,都加载成功了。这些都只有详细地了解了acad加载库的过程和搜寻库的规则才能彻底明白。
实验了一下,带/b “xxx.scr”参数启动acad.exe会不认arx所在的目录。把该目录加到acad的支持路径或者os的环境变量path,或者当作快捷方式的起始位置都可以。
不带/b参数,空参数启动acad.exe,手动arx加载各arx也能成功。
acad.exe 中的 0x25c70fc2 (???.arx) 处最可能的异常: 0xC0000005: 读取位置 0x0000009c 时发生访问冲突相关推荐
- xxx.exe 中的 0x005d93af (sss.dll) 处最可能的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突
问题:xxx.exe 中的 0x005d93af (sss.dll) 处最可能的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突? 让人头大! 解决经过: Windows ...
- “XXX.exe 中的 0xXXXXXXXX处未处理的异常: 0xC0000005: 读取位置 0xXXXXXXXX 时发生访问冲突”的一种解决方案
CxxxDlg *pDlg = (CxxxDlg*)AfxGetMainWnd(); 定时器回调函数中pDlg调用类成员变量和成员函数时出现以上错误.经观察pDlg为空指针,确实意想不到. 解决方法: ...
- Demo.exe 中的 0x10001fdd 处最可能的异常: 0xC0000005: 读取位置 0x0000001c 时发生访问冲突
终结点映射器中没有更多的终结点可用 解决办法现在很多电脑是使用修改的XP系统,默认情况下,文件和打印机共享服务是关闭的. 当某些程序要使用到这个功能时,就会出现"终结点映射器中没有更多的终结 ...
- 关于 xxxx.exe 中的 0xxxxxxxx 处最可能的异常: 0xC0000005: 读取位置 0xxxxxxxx 时发生访问冲突
原帖地址:http://www.cnblogs.com/lin1270/archive/2013/04/17/3025831.html 在软件运行时,在VS的输出窗口中,有可能出现如标题的错误提示,但 ...
- 0x0F1AFD76 (libcocos2d.dll) (Plane.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0x00000018 时发生访问冲突。
0x0F1AFD76 (libcocos2d.dll) (Plane.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0x00000018 时发生访问冲突. Get data fr ...
- (转载)0x0F1AFD76 (libcocos2d.dll) (Plane.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0x00000018 时发生访问冲突。
原文地址:http://blog.csdn.net/u010398774/article/details/23567441 0x0F1AFD76 (libcocos2d.dll) (Plane.exe ...
- (xxx.dll)处(位于xxx.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000003F 时发生访问冲突。已解决。
下面两个这种类型的报错都一样.(跟xxx.dll和xxx.exe都没关系) 0x794CECC1 (Qt5Cored.dll)处(位于 xxx.exe 中)引发的异常: 0xC0000005: 读取位 ...
- xx.exe 中的 0x014180bd 处有未经处理的异常: 0xC0000005: 读取位置 0xfeeefeee 时发生访问冲突(当指针访问异常时,应考虑是不是对象未创建)。
xx.exe 中的 0x014180bd 处有未经处理的异常: 0xC0000005: 读取位置 0xfeeefeee 时发生访问冲突(当指针访问异常时,应考虑是不是对象未创建). 参考文章: (1) ...
- 【语言-C++】Image - .exe 中的 0x0043a998 处有未经处理的异常: 0xC0000005: 读取位置 0x029d846c 时发生访问冲突
问题 xxxxxx.exe 中的 0x0043a998 处有未经处理的异常:0xC0000005: 读取位置 0x029d846c 时发生访问冲突 断点位置 ..\MicrosoftSDKs\Wind ...
- 0x774B9E37 (KernelBase.dll)处(位于 LogonServer.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突解决
网狐大联盟核心服务数据解锁函数访问冲突,报错: 0x774B9E37 (KernelBase.dll)处(位于 LogonServer.exe 中)引发的异常: 0xC0000005: 读取位置 0x ...
最新文章
- Hat’s Words(字典树)
- python3 open()内置函数
- 在php中使用mb_substr($row['title'],0,15,'utf-8')解决获取的字符后面几们的乱码问题
- android 文字fly动画,超好看的下拉刷新动画Android代码实现
- C#(4) implicit explicit
- C语言宏定义取得两数的最大值和最小值
- scrum–yesterday once more
- 如何配置IIS日志信息
- 在数据库中存储层次型数据
- 支持J2EE架构的服务器,利用J2EE架构构建Web服务实现应用集成
- 基于单片机PID算法温度控制系统设计(毕设)
- linux如何伪装ip,如何伪装你的IP(二)
- 最贵新股没破发,此前弃购7.8个亿,背靠华为的这家半导体公司这么香?
- (八)苏世民:我的经验和教训:决策(567)
- android指南针卡死,android指南针
- 2017广东工业大学程序设计竞赛决赛 E-倒水(Water) (二进制的应用) + H-tmk买礼物(dp思想)
- 职场低情商就这三句话
- pdfwin10闪退_windows10打开pdf文件3秒后秒退
- vue SEO的解决方案
- OA系统高性能部署方案