【发布时间】:2014-01-04 11:26:07
【问题描述】:
我有 3 台计算机,其中两台使用 Windows 8。使用最新版本的 MinGW 的 g++ (4.8.1-4),每当我在 Windows 8 计算机上而不是在 Windows 7 上编译和运行时,我的 hello world 程序都会冻结。
#include <iostream>
int main()
{
std::cout << "Hello, World!" <<std::endl;
return 0;
}
这在 g++ 中编译得很好,但运行 a.exe 将显示“Hello, World!”然后会弹出一个窗口并说“a.exe已停止工作,Windows可以在线检查程序的解决方案......”等。
有人见过这个问题吗?
另外,我试过 "std::cout
按照 Eric 的建议,我重新编译了程序并在 gdb 中运行它,得到以下输出:
Program received signal SIGILL, Illegal instruction.
0x00405065 in _Jv_RegisterClasses ()
【问题讨论】:
-
尝试在调试器下运行;它至少会告诉你失败在哪里。
-
好的,我运行 gdb 并显示“程序收到信号 SIGILL,非法指令。_Jv_RegisterClasses () 中的 0x00405065”
-
我认为最可能的原因是标准 C++ 库是使用某些运行时加载库的不兼容版本编译的,最类似于某些基础库。
-
抱歉之前的评论,我不知何故跳过了你问题的最后一行。 Eric 的建议似乎是目前最好的。检查整个堆栈跟踪,如果它晦涩难懂或难以阅读,请在此处发布,我们会提供帮助。此外,检查控制台的编码/代码页也可能有所帮助,但我看不出它是如何使应用程序崩溃的。在最坏的情况下,它应该只输出奇怪的符号而不是文本。
-
试试 std::cout