2013-04-16 3 views
1

У меня есть этот вопрос в команде cout на моем компьютере. Я использую MingW и Netbeans для обучения C++. Я попытался скомпилировать и запустить программу со следующим кодом.Программа C++ выходит из строя при выводе целых чисел

#include <iostream> 

int main(){ 
    int x = 5; 
    int y = 7; 
    std::cout << std::endl; 
    std::cout << x + y << " " << x * y; 
    std::cout << std::endl; 
    return 0; 
} 

Этот код сохраняется как xycalculation.cpp и я скомпилировал его с помощью команды g++ -o xycalc.exe xycalculation.cpp на моем Windows XP с пакетом обновления 2 компьютера. У меня есть переменные окружения, установленные в PATH. C: \ WINDOWS \ system32; C: \ WINDOWS; C: \ WINDOWS \ System32 \ Wbem; D: \ Qt \ Qt5.0.1 \ 5.0.1 \ mingw47_32 \ bin; D: \ MinGW \ bin; D: \ MinGW \ msys \ 1.0 \ bin

Этот код компилируется отлично и создает файл xycalc.exe. и когда я пытаюсь запустить его через командную строку на xycalc.exe, он дает мне сообщение об ошибке Windows и выходит без вывода каких-либо результатов.

Сведения об ошибке, отображаемой при нажатии ссылки «За дополнительной информацией об этой ошибке, нажмите здесь».

AppName: xycalculation.exe AppVer: 0.0.0.0  ModName: libstdc++-6.dll 
ModVer: 0.0.0.0 Offset: 000952a0 

Может кто-нибудь дать мне указания, чтобы исправить эту проблему ?, это будет большим подспорьем для меня, чтобы продолжить изучение этого языка.

Заранее спасибо.

+2

Я не вижу ничего плохого в коде. – chris

+0

Скомпилирует и работает отлично для меня (используя 'g ++' в Mac OS). – Floris

ответ

1

Добавить -static-libgcc и -static-libstdc++ в свою командную строку, чтобы статические ссылки на библиотеки или поместить их в ту же папку, что и exe.

+0

спасибо. Вау! он сделал это. но мне нужно устанавливать команды '-static-libgcc' и -'static-libstdC++' каждый раз, когда я компилирую источники? Еще раз спасибо. – isu3ru

+0

Является ли любая ошибка конфигурации в моей версии MingW? – isu3ru

+0

Являются ли библиотеки 'D: \ MinGW \ lib'? Попробуйте добавить это в PATH вместо статической привязки. –

1

Причина, по которой вы получаете эту ошибку, заключается в том, что по умолчанию ваш компилятор не будет компилировать libstdc++ в вашу программу.

Я использую кодовые блоки, но вы можете реплицировать ошибку с помощью компилятора MinGW и пытаться запустить программу за пределами кодовых блоков в консоли.

Чтобы устранить эту проблему, Вам необходимо добавить:

-static-libgcc (C) 
-static-libstdc++ (C++) 

своим компоновщика флаги, которые будут компилировать библиотеки в ваш EXE (больший EXE, но он будет работать).

+0

Есть ли способ связать только меньшее подмножество? Это генерирует Hello World более 1 МБ! – Allen

+0

@Allen hmm Я уверен, что если вы создали пользовательскую библиотеку только с тем, что вам было нужно, вы могли бы это сделать. Но я никогда этого не делал. – Serdalis

+0

Странно, я играл с простым «Привет, мир!». программа. Я использую «-static-libstdC++» или нет, выход .exe требует наличия libgcc_s_dw2-1.dll или он выдает ошибку. Если я использую «-static-libstdC++», то .exe становится огромным, но все равно не будет работать, если этого .dll нет. – Allen

Смежные вопросы