在启动期间程序退出,代码为 0xc0000139 [重复]

Posted

技术标签:

【中文标题】在启动期间程序退出,代码为 0xc0000139 [重复]【英文标题】:During startup program exited with code 0xc0000139 [duplicate] 【发布时间】:2017-06-10 10:04:00 【问题描述】:

更新:

结果证明这是一个编译器问题(我使用的是 MinGW),因此 workaround 正在切换到另一个编译器(在本例中为 Cygwin)。


(原始)问题

我是一名开始自学 C++ 的学生,在尝试使用 string

时遇到了问题

这是我的测试代码(不工作的那个)

#include <iostream>
#include <string>

using namespace std;

int main()

    string myString;

    cin >> myString;
    cout << myString;

    return(0);

当我尝试运行它时,程序刚刚结束并退出在我可以输入任何内容之前,这是我尝试从gdb运行时的结果

(gdb) run
Starting program: C:\Users\DANIEL~1\AppData\Local\Temp\sandbox.exe
[New Thread 15036.0x31bc]
[New Thread 15036.0x2db4]
[New Thread 15036.0x2628]
[New Thread 15036.0x2280]
During startup program exited with code 0xc0000139.
(gdb)

当我尝试制作文件并从 cmd 运行它时

g++ sandbox_string.cpp -o sandbox_string

(我添加了_string与_int makefile分开,程序还是一样)

我收到了这个错误: Entry point not found

在访问 Google 之后,我认为这个问题与 缺少 DLL 有关。我怎样才能知道我缺少哪些 dll,有没有办法确保我拥有每个 dll?

有几点我想提一下:

• 我承认这可能与Why are all my C++ programs exiting with 0xc0000139? 重复,但除了降级GCC 之外没有提供任何解决方案。我试过了,但没有用。同样在那个问题中,有人提到了缺少 DLL,但没有提供进一步的解决方案。

• 如果我尝试cin 一个整数,例如:

#include <iostream>
#include <string>

using namespace std;

int main()

    int myString;
    cin >> myString;
    cout << myString;
    return(0);

效果很好,我可以输入,程序会输出然后正常退出:

(gdb) run
Starting program: C:\Users\DANIEL~1\AppData\Local\Temp\sandbox.exe
[New Thread 9120.0x35ac]
[New Thread 9120.0x2c4c]
[New Thread 9120.0x390c]
[New Thread 9120.0x32c0]
7
7[Inferior 1 (process 9120) exited normally]
(gdb)

• 我的编译器是 MinGW,这是我的 MinGW 安装程序屏幕截图,其中包含(希望)您需要的所有细节 MinGW Installer

• 我正在使用 Atom - 一个文本编辑器,带有一个用于编译和运行 C++ 代码的插件(称为“gpp-compiler”),因为我觉得坚持使用一个文本编辑器很舒服使用 IDE,但是,如果您认为我应该使用其他东西,请告诉我。

• 我对编程并不陌生,但我(非常)对 C++ 很陌生,所以如果有任何愚蠢的错误,请原谅我,这也意味着我非常喜欢 如果可能的话,我更喜欢简单的答案/解决方案。但是我对带有适当解释的复杂答案没有任何问题。

谢谢

【问题讨论】:

“例如,如果我尝试 cin 一个整数,它可以正常工作:” 我很困惑。显然程序运行足够长的时间来等待输入(因为当您输入7 时,您会得到7 并且一切都很好)。那么您在第一个示例中的输入在哪里?这些不能是相同的程序。 “MinGW”包含大量的版本和配置。请具体说明您的工具链。 @LightnessRacesinOrbit 我已经用更多信息编辑了我的问题: • 第一个示例程序在我可以输入任何内容之前退出 • 我截取了我的 MinGW 安装程序的屏幕截图,其中希望包括版本号等谢谢 请以文字形式包含相关细节,而不是图片链接。 我最终通过切换到 CygWin64 解决了这个问题,谢谢。反正我在那里我可以关闭这个问题或将其标记为已解决而不选择答案,因为这些都没有帮助我? 【参考方案1】:

代码似乎没有错误。但正如上面提到的,这是一个编译器问题,所以从 MinGW 切换到 Cygwin 已经解决了这个错误。

错误代码0xc0000139出现在配置错误、重要文件丢失或损坏时。所以切换到一个完全不同的编译器已经解决了这个问题。

希望这将有助于改善这个问题的价值@Daniel D。

【讨论】:

我注意到这段代码可以在其他地方工作,但不能在我的电脑上工作,你认为有什么原因可能是原因。因为我试过降级了,还是不行。谢谢 尝试为“cin”添加此代码 (getline (cin, mystr);) cout &lt;&lt; "What's your name? "; getline (cin, mystr); cout &lt;&lt; "Hello " &lt;&lt; mystr &lt;&lt; ".\n"; 我也试过了,但还是不行,但是我通过切换到 cygwin 解决了这个问题【参考方案2】:

您的代码看起来正确。 你也可以发布makefile吗?

我会在命令行上尝试这样简单的事情: g++ sandbox.cpp -o 沙盒

【讨论】:

我试图制作文件并从中运行,它会返回您可以在我的问题中找到的错误(刚刚编辑过)。如果仍然需要,我也可以发布 makefile 吗? 这可能是编译器的问题,你能不能把你的 main 改成这样: int main(int argc, char *argv[]) 这确实是编译器问题,因为我通过切换到 cygwin 解决了问题,无论如何,谢谢。 酷!您可以在您使用的编译器的网页上提出问题/问题 :-) 谢谢,我会这样做的:)

以上是关于在启动期间程序退出,代码为 0xc0000139 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Netbeans 8.0.2 返回“启动期间程序退出,代码为 0xc0000135”

在发布时部署 UWP:错误 0xC0000139:未找到入口点

无法启动任何模拟器

使用代码0xC0000417(无效的C运行时参数)退出意外的程序

Windows - getGLES2ExtensionString:找不到GLES 2.x配置;退出代码-1073741819(0xC0000005)

模拟器:进程以退出代码 -1073741515 (0xC0000135) 结束