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

Dan*_* D. 12 c++ string crash mingw

更新:

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


(原始)问题

我是一名开始自学C++的学生,在尝试使用C++时遇到了问题string

这是我的测试代码(不起作用的代码)

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string myString;

    cin >> myString;
    cout << myString;

    return(0);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试运行它时,程序刚刚结束并退出,然后我才能输入任何内容,这就是我尝试运行时的结果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)
Run Code Online (Sandbox Code Playgroud)

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

g++ sandbox_string.cpp -o sandbox_string

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

我收到此错误: 未找到入口点

经过一番谷歌之旅后,我相信这个问题与缺少 DLL相关。我怎么知道我缺少什么 dll,有没有办法确保我拥有每个 dll?

有几点我想提一下:

• 我承认这可能与为什么我的所有 C++ 程序都以 0xc0000139 退出?,但是除了降级 GCC 之外没有提供任何解决方案。我试过了,但没有用。同样在那个问题中,有人提到了缺少 DLLs,但没有提供进一步的解决方案。

• 如果我尝试cin使用整数,例如:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int myString;
    cin >> myString;
    cout << myString;
    return(0);
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,我可以输入并且程序会输出然后正常退出:

(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)
Run Code Online (Sandbox Code Playgroud)

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

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

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

谢谢

Sha*_*ank 3

代码看起来没有错误。但正如上面提到的,这是一个编译器问题,因此从MinGW切换到Cygwin已经解决了该错误。

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