社区
进程/线程/DLL
帖子详情
DLL DEBUG&RELEASE
BBirdlyh
2007-12-04 05:05:52
遇到过一些第三方库,用DLL发布的。DEBUG版本的APP,必须调用DEBUG版本的DLL,RELEASE 版本的APP 必须调用RELEASE版本的DLL。请问这是为什么?是不是所有DLL必须遵循这个约定?那以DLL为载体的COM会怎么样呢,谢谢
...全文
272
11
打赏
收藏
DLL DEBUG&RELEASE
遇到过一些第三方库,用DLL发布的。DEBUG版本的APP,必须调用DEBUG版本的DLL,RELEASE 版本的APP 必须调用RELEASE版本的DLL。请问这是为什么?是不是所有DLL必须遵循这个约定?那以DLL为载体的COM会怎么样呢,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
判断
DLL
文件是
Debug
版或
Release
版
在系统发布后,应将所有的
DLL
文件(系统生成的,引用第三方组件),改为
Release
版。在这之前,对于第三方组件当然要判断其是否为
Debug
版本了。
freeglut预编译版(头文件+lib+
dll
)
因为freeglut3.0之后没有再直接提供预编译版本的lib和
dll
,这是一个已经经过cmake编译好的windows平台下的freeglut的预编译内容,包含头文件,lib和
dll
,有
debug
版本和
release
版本两种
openssl 静态 链接库 libeay32.lib ssleay32.lib
openssl 1.0.0b 的静态链接库 libeay32.lib ssleay32.lib,用他编译无需
dll
就可以运行。 网上找不到,自己动手弄的,需要的同学你懂的。 编译参数: /MT /Ox /O2 /Ob2 -O -DOPENSSL_NO_RC5 -...分
debug
和
release
版
[转]动态库*.
dll
文件的
Debug
/
Release
版本是否可以混用(交叉用)?
使用一些第三方的
dll
,比如opencv,会分别生成
debug
和
release
的
dll
,在exe中必须要引用指定版本的
dll
,不能混用,否则会出错;但是还有一些第三方的
dll
,比如halcon,只提供给用户
release
的
dll
,用户的
debug
版和...
C++动态库*.
dll
文件的
Debug
/
Release
版本是否可以混用(交叉用)?
比如
debug
的exe调用
release
编译生成的
dll
的函数,参数如果使用stdvector或者stdstring之类的东西,肯定会崩。含有stl的
debug
动态库和
release
动态库在项目中不能混用,
debug
项目必须用
debug
库,
release
项目必须用...
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章