[求助]关于同一个程序在不同机器上运行时,Debug版本和Release版本居然有不同反应

雨中的月儿 2008-07-05 10:08:23
程序中,用了一个WebBrowser2控件,并在它的基础上改了一些东西。在自己机器上调用运行Debug和Release都没有问题。

然后将WebBrowser2控件copy到一个没有安装VC6.0的机器上,在这台机器上运行Debug版本的程序,就不能运行。而运行Release版本程序就可以正确执行。

自己估摸着可能是因为Debug和Release版本所需要的dll文件不同造成这种差别。但不知道在没有安装VC6.0的机器上部署文件时,需要copy哪些dll文件才能让Debug程序正常运行。

多谢!

请高手指点!
...全文
68 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
weichen2005 2008-07-08
  • 打赏
  • 举报
回复
静态连接了库, 就不需要动态加载dll了, mark一下
ouyh12345 2008-07-05
  • 打赏
  • 举报
回复
应该是目标机器没有debug所需要的库,如mfc42d.dll
pangqi022 2008-07-05
  • 打赏
  • 举报
回复
你可以用VC自带的工具查看一下你的deg生成的EXE需要那些DLL
好象叫depans什么的忘了具体怎么拼了呵呵
只要你安装VC全的话就带哪个工具的
雨中的月儿 2008-07-05
  • 打赏
  • 举报
回复
我用Depends对生成的Debug版本的exe文件分析了,发现需要MFC42D.dll,MSVCRTD.dll,KERNEL32.dll,USER32.dll,MFCO42D.dll,OLE32.dll,OLEAUT32.dll这些dll文件。

把MFC42D.dll,MFCO42D.dll和MSVCRTD.dll都放到c:\windows\system32中了。但现在还是运行不了Debug版本的exe。

无奈了!!

刚才把Project settings里的
Use MFC in a Shared Dll 改成 Use MFC in a Static Library,然后再重新编译Debug版本,生成的exe文件就可以在别的机器人上运行,请问这又是为什么呢?

搞晕了……已经
雨中的月儿 2008-07-05
  • 打赏
  • 举报
回复
我明白楼上的意思,呵呵。

不过,是要测试和调试那个控件嘛,也没办法……

arong1234 2008-07-05
  • 打赏
  • 举报
回复
这是很正常的,操作系统会把release的库自动安装,而debug版本的则不会安装。拷贝一个debug版本的库到部署的机器上也不是啥好主意。

你永远不要试图部署debug版本,这不仅仅是因为系统不带debug版本的库文件(release版本的操作系统会带),而且是因为debug信息在其中会影响系统性能。
zhouzhenyan 2008-07-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pangqi022 的回复:]
你可以用VC自带的工具查看一下你的deg生成的EXE需要那些DLL
好象叫depans什么的忘了具体怎么拼了呵呵
只要你安装VC全的话就带哪个工具的
[/Quote]

是depends。

“在这台机器上运行Debug版本的程序,就不能运行。而运行Release版本程序就可以正确执行。 ”缺少debug相关的dll,用depends查看debug版本的dll依赖关系。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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