在启动程序期间退出代码0xc0000139

时间:2017-01-25 09:32:53

标签: c++ string crash mingw

更新

这结果是编译器问题(我使用的是 MinGW ),因此解决方法正在切换到另一个编译器(在本例中为 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 ++的新手所以请原谅我是否有任何愚蠢的错误,这也意味着我非常喜欢简单的答案/解决方案,如果可能的话< / strong>即可。但是我会对复杂的答案没有问题,并附有适当的解释。

由于

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:-1)

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

我会在命令行上尝试一些简单的事情: g ++ sandbox.cpp -o sandbox