参见英文答案 > Why are all my C++ programs exiting with 0xc0000139? 2个
更新:
这结果是一个编译器问题(我使用的是MinGW),因此解决方法是切换到另一个编译器(在本例中为Cygwin).
(原始)问题
我是一名自己开始学习C的学生,在尝试使用字符串时遇到了一个问题
这是我的测试代码(不起作用的代码)
#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,但没有提供进一步的解决方案.
•如果我试图以整数为例:
#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的新手所以请原谅我是否有任何愚蠢的错误,这也意味着我更喜欢简单的答案/解决方案.但是我会对复杂的答案没有问题,并附有适当的解释.
谢谢
解决方法:
你的代码看起来正确.
你也可以发布makefile吗?
我试着在命令行上做一些简单的事情:
g sandbox.cpp -o sandbox