vs2005 release后生成的exe文件不能正常运行(急)

时间:2021-04-19 20:15:41
 如题,生成的exe文件,双击后,运行出来的画面,好像只编译了一部分。
例如,画面的文本框,在画面启动后赋的初值初始化为空,正常运行后,这些初值都不显示的,现在release后的exe双击后,
这些初值还存在。然后按正常的操作,总处错误,无法继续。

debug生成的exe文件,可以正常运行。

并且同一个程序有时候会出现这样情况,有时候很正常,release后的exe能正常运行。

青高手指点!

15 个解决方案

#1


编译之前,删除所有已经生成过的dll pbd文件,重新编译。

#2


built之前,先进行clean,然后built,
生成的exe还是不能正常运行

#3


各位没有遇到过这种情况吗,会是什么原因呢

#4


试过编写其它程序吗?如果都是这种问题,考虑你的VS是否出现问题。机器是否有木马。
如果其它正常那就检查代码吧!

#5


debug文件夹下的exe和release下的exe有什么区别吗?

#6


其他程序都正常
就这个程序,上周也正常
今天突然就变成这样了

另外一个现象是,出问题的程序B是在A中调用使用的。

比如在A里选择1,运行B画面。
我把A和B各自built后,release文件夹下生成的a.exe,b.exe,复制到一个新的文件夹里,
单独双击b.exe,出现上述问题
先运行a.exe,选择1,启动的b正常

很不理解怎么突然成这样子了

#7


你是不是编译的时候,忘记选择工具栏上的编译方式了?
选Debug模式,exe生成到Debug文件夹;
选Release模式,exe生成到Release文件夹;

#8


两个都试过了
每次都是debug文件夹里生成的exe正常
release文件夹里生成的不正常

#9


 F10单步调试,在B程序里,执行下面的代码

 Sub Main(ByVal CmdArgs() As String)
        frmMain.ShowFormAsDialog(C_DEBUG, CmdArgs)
   End Sub

是因为参数C_DEBUG的原因吗?
可以以前好好的呀,这是别人做的程序,我没改过

#10


DEBUG的定义

#If DEBUG Then
    Const C_DEBUG As Boolean = True
#Else
    Const C_DEBUG As Boolean = False
#End If

#11


查看下是否跟当然路径被改变有关系,A程序中有改变路径的操作

#12


查看下是否跟当前路径被改变有关系,A程序中是否有改变路径的操作

#13


现在编译正常了

原因是原来的程序中,有像上面贴的代码那样的调试控制
现在把那些注释掉,就ok了

不过现在还有两个问题搞不明白
1。为什么以前同样的操作就没问题?(我根本不懂这些,以前就是按照和其他程序一样的做法,正常)
2。原来的代码中为什么要对debug和release加以判断控制呢,肯定有他的原因,一般什么情况下需要这样做?

#14


因为有些代码只是在调试的时候需要,
正式发布的时候就不需要了。

#15


这问题,我也不太清楚

#1


编译之前,删除所有已经生成过的dll pbd文件,重新编译。

#2


built之前,先进行clean,然后built,
生成的exe还是不能正常运行

#3


各位没有遇到过这种情况吗,会是什么原因呢

#4


试过编写其它程序吗?如果都是这种问题,考虑你的VS是否出现问题。机器是否有木马。
如果其它正常那就检查代码吧!

#5


debug文件夹下的exe和release下的exe有什么区别吗?

#6


其他程序都正常
就这个程序,上周也正常
今天突然就变成这样了

另外一个现象是,出问题的程序B是在A中调用使用的。

比如在A里选择1,运行B画面。
我把A和B各自built后,release文件夹下生成的a.exe,b.exe,复制到一个新的文件夹里,
单独双击b.exe,出现上述问题
先运行a.exe,选择1,启动的b正常

很不理解怎么突然成这样子了

#7


你是不是编译的时候,忘记选择工具栏上的编译方式了?
选Debug模式,exe生成到Debug文件夹;
选Release模式,exe生成到Release文件夹;

#8


两个都试过了
每次都是debug文件夹里生成的exe正常
release文件夹里生成的不正常

#9


 F10单步调试,在B程序里,执行下面的代码

 Sub Main(ByVal CmdArgs() As String)
        frmMain.ShowFormAsDialog(C_DEBUG, CmdArgs)
   End Sub

是因为参数C_DEBUG的原因吗?
可以以前好好的呀,这是别人做的程序,我没改过

#10


DEBUG的定义

#If DEBUG Then
    Const C_DEBUG As Boolean = True
#Else
    Const C_DEBUG As Boolean = False
#End If

#11


查看下是否跟当然路径被改变有关系,A程序中有改变路径的操作

#12


查看下是否跟当前路径被改变有关系,A程序中是否有改变路径的操作

#13


现在编译正常了

原因是原来的程序中,有像上面贴的代码那样的调试控制
现在把那些注释掉,就ok了

不过现在还有两个问题搞不明白
1。为什么以前同样的操作就没问题?(我根本不懂这些,以前就是按照和其他程序一样的做法,正常)
2。原来的代码中为什么要对debug和release加以判断控制呢,肯定有他的原因,一般什么情况下需要这样做?

#14


因为有些代码只是在调试的时候需要,
正式发布的时候就不需要了。

#15


这问题,我也不太清楚