用VC6++ WIZARD创建的PROJECT,在DEBUG下编链通过,运行正常。在RELEASE下编链也能通过,但运行中却会出现ACCESS VIOLATIONS错误!
    后将编链选项由MULTITHREADED DLL改为DEBUG MULTITHREADED DLL,即由/MD改为/MDd,运行就一切正常!
    前者使用MSVCRT.LIB,后者使用MSVCRTD.LIB。两者有何区别?造成上述现象的原因是什么?

解决方案 »

  1.   

    Multithreaded using DLL (msvcrt.lib)
    Debug Multithreaded using DLL (msvcrtd.lib)
      

  2.   

    \MSDN98\98VS\2052\kb.chm::/Source/visualc/q154419.htm
      

  3.   

    那么,为什么我的project链接msvcrt.lib后运行时会出现错误,而链接msvcrtd.lib后却运行正常?
      

  4.   

    Debug 和 Release 的区别
      

  5.   

    确实是debug和release的区别。可是程序最终是要做成release版的,怎样才能让程序在release下也能正常运行,不再出现access violation错误?
      

  6.   

    这种问题基本都是你的程序的问题,比如常见的指针越界,由于Debug版本检查的比较多,内存分配时也比实际需要的大,所以Debug没有问题,Release版本就出现了问题,最简单的解决办法是在release版本中加入调试信息,跟踪一下,就知道问题在什么地方了
      

  7.   

    “在release版本中加入调试信息,跟踪一下”    —— release下也能跟踪调试吗?具体怎样实现?请高手指点,谢谢!
      

  8.   

    我用的是笨办法:MessageBox,
    谁有好办法拿出来大家共享。
      

  9.   

    将你的project configer设置成release编译即可