本地'已退出代码1(0x1)

时间:2014-05-08 05:05:27

标签: visual-studio

您好我一直在使用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博客之一所示,但我仍然收到此错误

项目属性中给出的命令行参数会出现任何问题吗?

2 个答案:

答案 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应用程序创建的另一个项目修改其名称空间等,解决了我的错误。

我希望这可以帮助那些对此无用的错误消息感到困惑的其他人。