У меня есть 3 компьютера, два из которых используют Windows 8. Используя последнюю версию g ++ (4.8.1-4) MinGW, моя приветственная программа мира зависает всякий раз, когда я компилирую и запускаю на компьютерах Windows, 8, но не в Windows, 7.std :: endl сбой Windows 8, скомпилированный с использованием MinGW
#include <iostream>
int main()
{
std::cout << "Hello, World!" <<std::endl;
return 0;
}
Это компилируется нормально в г ++, но работает a.exe будет отображать "Hello, World!" то появится окно и скажет: «a.exe перестала работать, Windows может проверить онлайн для решения программы ....» и т. д.
Кто-нибудь видел эту проблему.
Кроме того, я попробовал «std :: cout < <« Привет, мир! \ N »< < std :: flush;" и это имеет ту же проблему. Кажется, что каждая функция, которая сбрасывает буфер, вызывает сбой.
Следуя совету Эрика, я перекомпилировать программу и запустил его в GDB и получил следующий результат:
Program received signal SIGILL, Illegal instruction.
0x00405065 in _Jv_RegisterClasses()
Попробуйте запустить под отладчиком; он, по крайней мере, скажет вам, где произошел сбой. –
ОК, я запустил gdb, и он говорит: «Программный сигнал SIGILL, нелегальная инструкция. 0x00405065 в _Jv_RegisterClasses()« – user1276560
Я думаю, что наиболее вероятная причина заключается в том, что стандартная библиотека C++ скомпилирована с несовместимой версией некоторого времени выполнения загруженную библиотеку, наиболее похожую на некоторую фундаментальную библиотеку. –