2015-11-28 2 views
2

Я пытаюсь научить себя программированию на C++, и я использую Cygwin для Windows с установленной g ++. Все было плавно, пока я не начал объявлять строковые переменные. Использование строковых литералов с cout не вызывает проблем, но как только я объявляю строковую переменную, программа больше не будет работать.Почему все мои программы на C++ выходят с 0xc0000139?

#include <iostream> 
#include <string> 

int main() 
{ 
    std::string mystring = "Test"; 
    std::cout << mystring; 
    return 0; 
} 

Предыдущий код компилируется без проблем, но при запуске не производится вывод. GDB предоставляет мне следующее:

(gdb) run 
Starting program: /cygdrive/c/Projects/CPP Test/string.exe 
[New Thread 8416.0x2548] 
[New Thread 8416.0x2510] 
[New Thread 8416.0x1694] 
[New Thread 8416.0x14f4] 
[Thread 8416.0x1694 exited with code 3221225785] 
[Thread 8416.0x14f4 exited with code 3221225785] 
During startup program exited with code 0xc0000139. 

Из того, что мне удалось собрать это своего рода точка входа вопроса с DLL, но я мог бы совершенно неправильно.

Кто-нибудь знает, что я сделал неправильно или что я неправильно сконфигурировал и как исправить?

+1

Ваш код компилируется и предоставляет ожидаемый результат «Test» для меня на Windows 10 с использованием gcc 4.8.1. Вы испытываете ту же проблему с другими C++-программами или это каким-либо образом связано с кодом, который вы предоставили? Также, какие флагов компилятора вы используете для компиляции кода? – JonatanE

+0

Я не слишком много играл с ним, но я могу получить другой код для компиляции. По-видимому, объявление строковой переменной вызывает проблему. Я не пробовал объявлять переменные любых других классов, поэтому я не уверен, что это проблема со строкой или классами вообще. Я использую GCC 5.2.0-1 на Win10, загруженный с помощью установщика Cygwin. Я не уверен, какие флаги я использую, вероятно, по умолчанию. Я скомпилировал его с g ++ -g string.cpp -o string.exe –

+0

Я изменил установленную версию GCC на 4.9.3, и мои программы теперь компилируются и запускаются должным образом. Как странно ... –

ответ

1

Ну, я не уверен, в чем была проблема (если кто-нибудь знает, что я был бы признателен!), Но я смог решить это сам, понизив с GCC 5.2.0 до GCC 4.9.3.

+3

Возможно, вы сможете использовать такой инструмент, как Dependency Walker (http://www.dependencywalker.com/), чтобы диагностировать проблемы с отсутствующими DLL. –

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