请教各位:如果dll的版本和调用程序的版本不一致,是否会造成问题,例如程序是debug的,但调用了release版的dll,或者程序是release的,但调用了debug的dll,这个是否会造成问题?

解决方案 »

  1.   

    得看编译时选用的是哪个版本的dll,运行时使用的dll最好和编译时用的dll相一致。编译Debug可以使用别人的Release版本的dll。
      

  2.   

    无论是DEBUG的还是RELEASE的都没有问题,DEBUG的体积相对大一点而已
      

  3.   

    是这样的,如果在开发环境上,debug和release互掉是可以的,但是,在用户环境上,不保证有debug版本所依赖的系统dll.
      

  4.   

    看情况,有时是有问题的。如果调用的动态库是常规动态库(如:仅仅是将一些计算方法封装为动态库),则没有问题(release和debug下都能调用),但是这样的动态库最好编译为release版本,那样占用空间较小。但是如果调用的动态库是扩展的动态库(如:一个动态库的功能是将一个从CView类继承的类导出),则release下只能调用release版的动态库,debug下只能调用debug下的动态库(原因:此时debug下导出的动态库会导出AssertValid(),Dump(CDumpContext& dc)等函数,而release版本动态库不会导出这些函数)。如果一个动态库是要导出一个视图(估计基类是视图类的所有类都一样),则一定要导出对应的debug版和release版的动态库,当用户的环境为release环境时调用release版的动态库,当环境为debug版时调用debug版的动态库。其实是否有问题它的本质是要看debug版和release版的动态库他们的所有内容是否一致(如导出的函数个数,参数等)。细心的话可以看下我们建一个mfc工程时,debug下调用的某些动态库是**d.dll而release下是**.dll。
    我博客里有解决这个问题的一篇文章。http://blog.csdn.net/BlueMap/archive/2010/06/28/5699680.aspx
      

  5.   

    **d.dll一般表示debug版本的动态库。
      

  6.   

    DEbug环境可以使用,发布版本必须使用Release
      

  7.   

       谢谢各位朋友热心。长见识了。我的问题和dll无关,现在还在处理。谢谢大家。