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 时发生访问冲突相关推荐

  1. xxx.exe 中的 0x005d93af (sss.dll) 处最可能的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突

    问题:xxx.exe 中的 0x005d93af (sss.dll) 处最可能的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突? 让人头大! 解决经过: Windows ...

  2. “XXX.exe 中的 0xXXXXXXXX处未处理的异常: 0xC0000005: 读取位置 0xXXXXXXXX 时发生访问冲突”的一种解决方案

    CxxxDlg *pDlg = (CxxxDlg*)AfxGetMainWnd(); 定时器回调函数中pDlg调用类成员变量和成员函数时出现以上错误.经观察pDlg为空指针,确实意想不到. 解决方法: ...

  3. Demo.exe 中的 0x10001fdd 处最可能的异常: 0xC0000005: 读取位置 0x0000001c 时发生访问冲突

    终结点映射器中没有更多的终结点可用 解决办法现在很多电脑是使用修改的XP系统,默认情况下,文件和打印机共享服务是关闭的. 当某些程序要使用到这个功能时,就会出现"终结点映射器中没有更多的终结 ...

  4. 关于 xxxx.exe 中的 0xxxxxxxx 处最可能的异常: 0xC0000005: 读取位置 0xxxxxxxx 时发生访问冲突

    原帖地址:http://www.cnblogs.com/lin1270/archive/2013/04/17/3025831.html 在软件运行时,在VS的输出窗口中,有可能出现如标题的错误提示,但 ...

  5. 0x0F1AFD76 (libcocos2d.dll) (Plane.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0x00000018 时发生访问冲突。

    0x0F1AFD76 (libcocos2d.dll) (Plane.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0x00000018 时发生访问冲突. Get data fr ...

  6. (转载)0x0F1AFD76 (libcocos2d.dll) (Plane.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0x00000018 时发生访问冲突。

    原文地址:http://blog.csdn.net/u010398774/article/details/23567441 0x0F1AFD76 (libcocos2d.dll) (Plane.exe ...

  7. (xxx.dll)处(位于xxx.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000003F 时发生访问冲突。已解决。

    下面两个这种类型的报错都一样.(跟xxx.dll和xxx.exe都没关系) 0x794CECC1 (Qt5Cored.dll)处(位于 xxx.exe 中)引发的异常: 0xC0000005: 读取位 ...

  8. xx.exe 中的 0x014180bd 处有未经处理的异常: 0xC0000005: 读取位置 0xfeeefeee 时发生访问冲突(当指针访问异常时,应考虑是不是对象未创建)。

    xx.exe 中的 0x014180bd 处有未经处理的异常: 0xC0000005: 读取位置 0xfeeefeee 时发生访问冲突(当指针访问异常时,应考虑是不是对象未创建). 参考文章: (1) ...

  9. 【语言-C++】Image - .exe 中的 0x0043a998 处有未经处理的异常: 0xC0000005: 读取位置 0x029d846c 时发生访问冲突

    问题 xxxxxx.exe 中的 0x0043a998 处有未经处理的异常:0xC0000005: 读取位置 0x029d846c 时发生访问冲突 断点位置 ..\MicrosoftSDKs\Wind ...

  10. 0x774B9E37 (KernelBase.dll)处(位于 LogonServer.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突解决

    网狐大联盟核心服务数据解锁函数访问冲突,报错: 0x774B9E37 (KernelBase.dll)处(位于 LogonServer.exe 中)引发的异常: 0xC0000005: 读取位置 0x ...

最新文章

  1. Hat’s Words(字典树)
  2. python3 open()内置函数
  3. 在php中使用mb_substr($row['title'],0,15,'utf-8')解决获取的字符后面几们的乱码问题
  4. android 文字fly动画,超好看的下拉刷新动画Android代码实现
  5. C#(4) implicit explicit
  6. C语言宏定义取得两数的最大值和最小值
  7. scrum–yesterday once more
  8. 如何配置IIS日志信息
  9. 在数据库中存储层次型数据
  10. 支持J2EE架构的服务器,利用J2EE架构构建Web服务实现应用集成
  11. 基于单片机PID算法温度控制系统设计(毕设)
  12. linux如何伪装ip,如何伪装你的IP(二)
  13. 最贵新股没破发,此前弃购7.8个亿,背靠华为的这家半导体公司这么香?
  14. (八)苏世民:我的经验和教训:决策(567)
  15. android指南针卡死,android指南针
  16. 2017广东工业大学程序设计竞赛决赛 E-倒水(Water) (二进制的应用) + H-tmk买礼物(dp思想)
  17. 职场低情商就这三句话
  18. pdfwin10闪退_windows10打开pdf文件3秒后秒退
  19. vue SEO的解决方案
  20. OA系统高性能部署方案

热门文章

  1. 关于r7000p更新专业版系统以及原版驱动无声音或无杜比音效的解决办法
  2. 矩阵分析与应用-1.1-矩阵的基本运算
  3. 必看的经典金融书籍推荐zz
  4. 【D3 API 中文手册】
  5. 【解决windows】Windows Linux双系统安装历程,超详细
  6. VC++进行ActiveX控件的开发
  7. TM2008 Preview体验
  8. 最好听的男孩英文名字大全
  9. 2012年7月份第1周51Aspx源码发布详情
  10. 不同浏览器中手动启用Flash Player