【发布时间】: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 解决了这个问题,谢谢。反正我在那里我可以关闭这个问题或将其标记为已解决而不选择答案,因为这些都没有帮助我?