设置了一个全局钩子CBTProc,钩子函数在动态库 B.dll中,实现对其它进程的注入。
    一般进程还好,但是对于3DMax不知道为什么debug版的可以,而release的在加载 B.dll的时候却会有异常(在vc内部显示的),外部表现就是3Dmax进程卡死,再没有动作,这个时候B.dll的DllMain还没有进去.
  有没有人知道为什么,因为会对所有的进程注入,对其他进程都没有什么影响,所以代码应该没有什么大的问题。而debug的缺可以正常运行,为什么release就不行了呢,优化什么的都调过了也没用~

解决方案 »

  1.   

    0xC0000005 就是这个~访问冲突,不是那种弹出来的 ,是在vc的输出窗口显示的,应该是被3DMax捕捉了~
    如果是debug的在异常信息那里会显示加载符号~然后一切正常
      

  2.   

    使用监视工具会发现B.dll被3dmax进程加载了2次,然后第二次加载的时候就卡住了。
    两次加载的空间地址不一样。查看内存,第一次的加载的地址上没有,第二次的地址上面才有(但是不知道加载完成没有)。
    如果是debug的都是一次加载完成。
      

  3.   

    有没有人知道 关于release和debug版本动态库的加载有什么区别么
      

  4.   

    我估计要么还是你的程序有问题。你可以在release下进行调试,看看还会不会出现问题。
      

  5.   

    1.在release下调试.
    2.使用日志文件输出关键点信息.
      

  6.   

    我的一个代码也用到了CBT hook,不知道有没有问题,你可以试试:http://blog.sina.com.cn/s/blog_4e5dcb9701000c44.html
      

  7.   

    我也做过类似的事,debug ok release 出错,有些地方是优化的问题,最好对你关键代码关闭全局优化。但很多时候是因为你的代码本身有bug,建议先让目标进程在调试状态,再远注看看
      

  8.   

    外部表现就是3Dmax进程卡死,再没有动作,
    ----------------------------------------
    是不是3D类游戏,我曾经写外挂时候遇到过,关闭挂弹出的对话框就好了,研究好久一直没有解决,据说是DirectX编程的问题。
    另:没有详细看你的问题,断章取义,希望给你一个参考