我有一个简单的程序,用C ++编写,在Windows 10机器上,用MinGW g ++编译器编译。
我包括<string>
标题,它运行正常。当我包含string
数据类型时,它将编译,但它不会运行。
重现这一点的最小代码量是:
#include <iostream>
#include <string>
using namespace std;
int main() {
string greeting;
cout << "hi" << endl;
return 1;
}
请注意,这很好用:
#include <iostream>
#include <string>
using namespace std;
int main() {
//string greeting;
cout << "hi" << endl;
return 1;
}
编译器的版本是6.3.0
g++.exe (MinGW.org GCC-6.3.0-1) 6.3.0
我3天前下载了它,所以我认为它是最新版本。 (也许不吧?)
我用Google搜索并浏览了stackoverflow以获得答案。
我能找到的最接近的问题是,这个人放弃并改变了操作系统。
我发现的另一个解决方案是使用Cygwin的编译器。我宁愿不,因为我已经有一个看似很好的编译器。似乎MinGW工具已被广泛使用,我应该能够使用编译器。
任何其他论坛/博客/等资源都有关于转换字符串或调用字符串方法的问题。
注意:相同的确切代码在Ubuntu 16.04上运行正常,包含的编译器。
EDITS:
虽然我意识到“它没有运行”没有用,但我不知道如何描述它。我运行已编译的程序,它的行为与我输入echo ''
时的行为相同。没有输出,没有迹象表明发生了任何事情。说出这种行为最有用的方法是什么?
如果我使用调试器,我会得到program exited with code 0xc0000139
快速谷歌搜索返回结果表明它是编译器的问题。与下面关于我的编译器版本的评论相同......
要编译程序,我运行g++ main.cpp -o b.exe
要执行它,我运行./b.exe
Mingw对某些游戏机存在长期问题(参见他们的faq)。可能值得检查它是否输出失败而不是通过例如执行来执行。重定向到文件./b.exe >out.txt
。
经过一些有用的评论和挫折之后,我决定尝试构建最新的编译器。我陷入困境并使用了Cygwin。 (我对Cygwin没有任何问题,我只想让MinGW工作。)
我按照本网站的说明(从https://gcc.gnu.org下载当前来源后)。
http://preshing.com/20141108/how-to-install-the-latest-gcc-on-windows/
笔记:
cd
放入源目录并从Cygwin终端运行./contrib/download_prerequisites
。它无缝地处理了所有内容,虽然花了一点点,但我现在能够使用string
数据类型并运行程序(成功)。make install
命令。我做了,这很头疼。最后,感谢所有有用的评论,以及那些要求澄清的评论。当我给机械师打电话,并说“我的车不会跑”时,他们会提出有用的问题,我们会一起努力为他们提供所需的相关信息。这就是上面发生的事情,我学到了一些东西(并解决了我的问题)。