您好我一直在使用Visula studio 2008我能够构建代码并在发布模式下调试我的项目时出现此错误
如何摆脱这种" Native'已退出代码1(0x1)"错误
lst_0704.exe':已加载' C:\ lst \ bin \ lst_0704.exe',已加载符号。
lst_0704.exe':已加载' C:\ Windows \ SysWOW64 \ ntdll.dll'
lst_0704.exe':已加载' C:\ Windows \ SysWOW64 \ kernel32.dll'
lst_0704.exe':已加载' C:\ Windows \ SysWOW64 \ KernelBase.dll'
该程序' [6480] lst_0704.exe:Native'已退出代码1(0x1)。
我试图将我的项目更改为调试模式,如MSDN博客之一所示,但我仍然收到此错误
项目属性中给出的命令行参数会出现任何问题吗?
答案 0 :(得分:2)
此行不一定表示错误:
The program '[6480] lst_0704.exe: Native' has exited with code 1 (0x1).
这只是意味着你的程序的进程(lst_0704.exe
)已经退出,大概是因为你要求它这样做。 “本机”部分意味着您的应用程序被编译为本机代码,而不是托管代码。它还告诉你返回码是1。
传统上,当应用程序正常退出而没有任何错误时,它将返回0的代码。但这并不是严格要求的。操作系统本身并没有检查这些返回代码的任何内容 - 如果您愿意,这取决于您。
我无法确切地告诉您为什么您的应用程序在退出时返回代码1,因为您尚未发布任何代码。但是我的通灵能力告诉我,在你的主要方法结束时可能有一个return 1;
声明(或其功能等同物)。如果您希望应用程序退出并返回0,则需要将其更改为return 0;
。
在Windows应用程序中(与控制台应用程序相对),返回代码通常是wParam
消息的WM_QUIT
,导致应用程序终止。换句话说,主消息循环将如下所示:
MSG msg;
BOOL bRet;
while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0)
{
if (bRet == -1)
{
// An error occurred
}
else
{
// Process the message
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
// GetMessage returned WM_QUIT, so return the exit code.
return msg.wParam;
您通过调用PostQuitMessage
function生成WM_QUIT
消息,该{{3}}采用指定退出代码的单个参数。这是作为wParam
传递并作为进程的退出代码返回的那个。同样,这里返回的代码并不重要,但如果代码正常退出并且没有错误,那么传统上 0。
答案 1 :(得分:0)
这个确切的错误,但由于不同的根本原因,阻止我开始执行新项目。没有其他错误,例外或任何其他迹象表明错误。
我的原因是由于将项目创建为控制台应用程序,然后将其切换到Windows应用程序。启动代码是不同的,并且在两种类型的项目之间不兼容。用其静态Program.cs
方法替换Main()
并从作为Windows应用程序创建的另一个项目修改其名称空间等,解决了我的错误。
我希望这可以帮助那些对此无用的错误消息感到困惑的其他人。