有的dll只有release的, 比如 msado15.dll只有release的。我们的程序使用之,可偏偏要有些人认为: debug程序就使用debug版本的
dll,release程序使用release版本的dll,还说: 如果不对应,会出各种莫名其妙的问题?很多dll只有一个版本的,  这岂不是睁眼说瞎话吗?

解决方案 »

  1.   

    debug 是要调试(debug)的,用 release 不只是没有调试信息。可能就不能调试。 
    那不如直接 release 了。
      

  2.   

    debug和release版本最大的区别就在于运行库的不同,自己可以在VS里面看使用的运行库是哪种,每种库对应的内存分配方式都可能不一样,如果由使用的dll提供了指针给外部使用,而外部使用delete之类的内存释放时,就会碰到问题(debug的new和delete对应的是HeapAlloc和HeapFree,而Release的new和delete对应的是malloc和free),这只是其中一点而已,还有很多。
    具体的可以查看http://www.cnblogs.com/fishtreeyu/archive/2011/11/27/2265023.html
      

  3.   


    但是有的确实只有一个版本的exe和 一个版本的dll当你的程序却和这些exe, dll交互的时候,你怎么办?它只有一个版本
      

  4.   

    "有的dll只有release的"
    那是 它 不让你 调试 他,
    这是 debug 版本 只能用 它,有没有问题 很难说。
      

  5.   


    但是有的确实只有一个版本的exe和 一个版本的dll当你的程序却和这些exe, dll交互的时候,你怎么办?它只有一个版本只有一个版本不是更好,否则还要#ifdef _DEBUG
      

  6.   


    如此说, debug exe对应 release dll是没有问题了?而release exe 对应一个debug dll,则可能有问题?是不是这个意思啊
      

  7.   

    "有的dll只有release的"那是 它 不让你 调试 他,这时 debug 版本 只能用 它,有没有问题 很难说
      

  8.   

    小心无大错,即使可以用,你自己开发的程序,无论 exe,还是dll都是要调试的。
    自然就互相对应比较好。
    不然找出很多错误根本就不是错误,只是版本不对造成的!! 
    或者出了错找不到,这个责任谁也没法负责,说不清楚呀!!
      

  9.   

    mfc运行库提供了release debug unicode release unicode debug
    如果你不使用对应的版本,你试试,看看会不会有问题,比如报内存泄漏什么的。msado15.dll在debug和release下都能使用,不代表其它的dll都必须这样。
    为了调试,一个类在debug和release下的大小甚至都不一样,你说有没有问题?你没做过不代表不可以这样做。类似这样的问题我在07年写过博客,当时在我一个mfc扩展dll上出现内存泄漏。总之一句话,能否在release和debug版本下使用同一个版本的dll,取决于这个dll本身在。
      

  10.   

    一般来说,如果你使用COM技术,包括ole activex com等,即基于接口的编程,是可以共用一个版本的dll的。
    但是如果是普通dll,则要小心,这也属于臭名招著的dll hell问题的一部分(当然更多的还是dll升级造成的问题)。