DLL DEBUG&RELEASE

BBirdlyh 2007-12-04 05:05:52
遇到过一些第三方库,用DLL发布的。DEBUG版本的APP,必须调用DEBUG版本的DLL,RELEASE 版本的APP 必须调用RELEASE版本的DLL。请问这是为什么?是不是所有DLL必须遵循这个约定?那以DLL为载体的COM会怎么样呢,谢谢
...全文
272 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
feng1976 2007-12-07
  • 打赏
  • 举报
回复
lib和dll 都是Debug的;
或者都是Release的
BBirdlyh 2007-12-05
  • 打赏
  • 举报
回复
to ouyh12345 :
=======在vc8之后,混杂使用dll可能会导致错误,而且很难调试
这种错误是致命的,导致程序崩溃的错误吗?

我明白DEBUG版本的DLL在APP调试时的重要性。只是看到很多说法说DLL不能混杂使用,但始终不知道这样的后果.如果按照这个说法每个发布的DLL都要发布至少2个版本。以DLL为载体的COM也要2个版本,这似乎是不合理的


to feng1976 :
===========应该说,Debug是为了调试用的,因此Release调Debug Dll没有什么实际意义
而Debug调用Release是有意义的

我个人同意你的说法,只是没有可靠的根据去确认

==========关键是你的Lib文件,DLL要是一个版本的,要么都是Debug,要么都是Release
这个是什么意思?能不能详细解释一下?
feng1976 2007-12-05
  • 打赏
  • 举报
回复
不一定这样
应该说,Debug是为了调试用的,因此Release调Debug Dll没有什么实际意义
而Debug调用Release是有意义的

关键是你的Lib文件,DLL要是一个版本的,要么都是Debug,要么都是Release

ouyh12345 2007-12-05
  • 打赏
  • 举报
回复
vc6和之前,关系不大
在vc8之后,混杂使用dll可能会导致错误,而且很难调试
BBirdlyh 2007-12-05
  • 打赏
  • 举报
回复
up
BBirdlyh 2007-12-05
  • 打赏
  • 举报
回复
UP
BBirdlyh 2007-12-04
  • 打赏
  • 举报
回复
谢谢,确实是很有用的经验。MBCS 版本和Unicode版本可能需要两个不同的DLL。但同是MBCS或UNICODE版本的DEBUG和RELEASE会怎么样呢?
而且以DLL为载体的COM呢,从来没有见过COM发布一个RELEASE版本又发布一个DEBUG版本。
这之间的区别在哪呢?如果忽略调试问题的话,还有没有其它问题?
youngwolf 2007-12-04
  • 打赏
  • 举报
回复
http://blog.csdn.net/yang79tao/archive/2007/07/03/1677647.aspx

最好是这样,如果你在debug下使用release的dll,出错时将得不到错误的详细信息。
而且,看看上面那篇文章,在跨版本的时候,可能还会出现内存泄漏。
BBirdlyh 2007-12-04
  • 打赏
  • 举报
回复
也就是说,这个不是必须的?起码程序运行不会出错?
但关键是,我遇到的这些库,如果只有DEBUG版的DLL,APP使用RELEASE版根本链接不过去。(这里使用隐式连接)。不知道是不是库提供商的DLL版本保护问题?
shanhqk 2007-12-04
  • 打赏
  • 举报
回复
1)这个主要是考虑到一些调试信息和使用的DLL文件的不同,因为如果用户使用DEBUG,可能为了输出一些有用的信息,
但是,DLL使用的RELEASE,就是没有办法输出,导致比较郁闷。
2)同样是提示的问题,如果一个是DEBUG,一个是RELEASE,可能出现,就是断点在Release中不管用,而显示的一些值也
是不合理的值,导致调试的时候认为是错的。
BBirdlyh 2007-12-04
  • 打赏
  • 举报
回复
up

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧