Я пытаюсь научить себя программированию на 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, но я мог бы совершенно неправильно.
Кто-нибудь знает, что я сделал неправильно или что я неправильно сконфигурировал и как исправить?
Ваш код компилируется и предоставляет ожидаемый результат «Test» для меня на Windows 10 с использованием gcc 4.8.1. Вы испытываете ту же проблему с другими C++-программами или это каким-либо образом связано с кодом, который вы предоставили? Также, какие флагов компилятора вы используете для компиляции кода? – JonatanE
Я не слишком много играл с ним, но я могу получить другой код для компиляции. По-видимому, объявление строковой переменной вызывает проблему. Я не пробовал объявлять переменные любых других классов, поэтому я не уверен, что это проблема со строкой или классами вообще. Я использую GCC 5.2.0-1 на Win10, загруженный с помощью установщика Cygwin. Я не уверен, какие флаги я использую, вероятно, по умолчанию. Я скомпилировал его с g ++ -g string.cpp -o string.exe –
Я изменил установленную версию GCC на 4.9.3, и мои программы теперь компилируются и запускаются должным образом. Как странно ... –