求助!程序Debug版本运行无错,但进行Release版本执行时就有错.不知道为什么?

chinesefire 2005-07-12 08:04:51

问题是这样的:一个工程(mydialog)的一个对话框上的按钮,在其单击函数里有如下语句:
CTestIO io;
io.ShowDlg();
CTestIO是一个DLL,我在当前工程内添加了CTestIO.h,ShowDlg()是CTestIO的一个成员函数.
当我在Set Active Project Configuration 中选择win32 Debug进行调试时,生成执行文件后,单击此按钮可以弹出一个对话框.
但是当我在Set Active Project Configuration 中选择win32 Release 时,生成执行文件后,单击此按钮出错,错误信息如下:
Program:D:\exercise\mydialog\mydialog\mydialog.exe
File:afxwin1.inl
Line:22
我的工程文件放在D:\exercise\mydialog\下,debug版调试时的exe输出路径是:\exercise\mydialog\mydialog\mydialogdbg.exe
谁能告诉我问题出在哪里?
进行Release版本编译时,输出路径是否需要改变?是否需要在哪些方面进行不同于Debug版本编译的设置?
...全文
310 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
casinosun 2005-08-03
  • 打赏
  • 举报
回复
注意一下目录
Alan S1 2005-08-02
  • 打赏
  • 举报
回复
UP
gamezealot 2005-08-02
  • 打赏
  • 举报
回复
这是基本的常识,只不过大部分人平时都不注意罢了~
myjerry 2005-08-02
  • 打赏
  • 举报
回复
codewarrior(会思考的草):牛人啊

我上次也碰到类似的问题,后来我把一个TCHAR 字符串先初始化后,就没事了。
会思考的草 2005-08-01
  • 打赏
  • 举报
回复
1.检查有没有在ASSERT之类的宏里写了有意义的代码——release版会去掉这些宏,所以里面不能包含有意义的代码。
2.所有的变量,包括局部的,全局的,都必须初始化,因为debug版会将变量,及new出来的内存初始化,比如CD——Cleared Data的缩写。但Release版不会,这样比如你有一个handle,线程中去wait它的话,就会卡死——因为handle保存的是上一次的值,线程误以为是一个有意义的句柄,等你去关闭它当然就卡死了。
3.在可能出错的地方,使用OutputDebugString输出调试信息,这类信息用DebugView之类的工具可以看到。或者,在可能出错的语句之前插入__asm int 3,跑起来后用SoftICE就可以断住。
StarsWu 2005-07-14
  • 打赏
  • 举报
回复
这类问题好象很多都出在数组或指针上,debug在数组越界不会出报错,而Release在数组越界后会报错。
goodboyws 2005-07-14
  • 打赏
  • 举报
回复
mydialog用的是Debug版本,CTestIO是Release版本,所以导致你的问题,MFC类Debug版和Release版
导出信息不一样
DentistryDoctor 2005-07-14
  • 打赏
  • 举报
回复
_AFXWIN_INLINE HINSTANCE AFXAPI AfxGetResourceHandle()
{ ASSERT(afxCurrentResourceHandle != NULL);//ASSERT failed at this line
return afxCurrentResourceHandle; }

应该是资源的问题

另debug与release最好在不同的输出目录
qrlvls 2005-07-12
  • 打赏
  • 举报
回复
如果没有 lib 应该是编译不能通过的,首先尝试全部重新编译一次
然后再试试修改某些工程配置来完成
西门豆豆 2005-07-12
  • 打赏
  • 举报
回复
是不是release版没有在工程设定中加载dll的testio.lib库啊,而debug设了

2,640

社区成员

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

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