2017-01-25 11 views
2

UPDATE:Во время запуска программы завершался с кодом 0xc0000139

Это оказалось проблемой компилятор (я использую MinGW) так обходной путь переходит на другой компилятор (в данном случае Cygwin).


The (оригинальный) вопрос

Я студент начинает изучать C++ по себе, и я сталкивался с проблемой при попытке работать с string

Это мой код испытания (тот, который не работает)

#include <iostream> 
#include <string> 

using namespace std; 

int main() 
{ 
    string myString; 

    cin >> myString; 
    cout << myString; 

    return(0); 
} 

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

(gdb) run 
Starting program: C:\Users\DANIEL~1\AppData\Local\Temp\sandbox.exe 
[New Thread 15036.0x31bc] 
[New Thread 15036.0x2db4] 
[New Thread 15036.0x2628] 
[New Thread 15036.0x2280] 
During startup program exited with code 0xc0000139. 
(gdb) 

Когда я попытался сделать файл и запустить это из CMD

g++ sandbox_string.cpp -o sandbox_string

(я добавил _string отделиться от _INT Makefile, программа по-прежнему та же)

Я получил эту ошибку: Entry point not found

После поездки круглый Google, я считаю, что эта проблема связана с отсутствующих библиотек DLL. Как я могу узнать, какие DLL (я) отсутствует, и есть ли способ убедиться, что у меня есть все DLL?

Есть некоторые моменты, которые я хотел бы упомянуть:

• Я признал, что это может быть дубликатом для Why are all my C++ programs exiting with 0xc0000139?, но не предусмотрено никакого решения, кроме понижения GCC. Я пробовал, и это не сработало. Также в этом вопросе кто-то упоминал о отсутствующих DLL-файлах, но не предоставил дальнейших решений.

• Если бы я попытался cin целое число, например:

#include <iostream> 
#include <string> 

using namespace std; 

int main() 
{ 
    int myString; 
    cin >> myString; 
    cout << myString; 
    return(0); 
} 

Он отлично работает, я могу ввести, и программа будет выводить то выход нормально:

(gdb) run 
Starting program: C:\Users\DANIEL~1\AppData\Local\Temp\sandbox.exe 
[New Thread 9120.0x35ac] 
[New Thread 9120.0x2c4c] 
[New Thread 9120.0x390c] 
[New Thread 9120.0x32c0] 
7 
7[Inferior 1 (process 9120) exited normally] 
(gdb) 

• Мой компилятор MinGW, это мой снимок экрана установщика MinGW с (надеюсь) каждой необходимой информацией MinGW Installer

• Я использую Atom - текстовый редактор с плагином для компиляции и запуска кода C++ (так называемый «gpp-compiler»), потому что мне удобно сохранять один текстовый редактор вместо использования IDE, , но, если вы думаете, что есть что-то еще, что я должен использовать, сообщите мне.

• Я не новичок в программировании, но я (очень) новичок в C++, поэтому, пожалуйста, простите меня, если есть какая-то глупая ошибка, также это означает, что я очень предпочитаю простой ответ/решение, если возможно. Но у меня не будет проблем со сложным ответом, сопровождаемым правильным объяснением.

Thanks

+0

_ «Если бы я попытался CIN целого числа, например, он отлично работает:» _ я запутался , Очевидно, что программа работает достаточно долго, чтобы ждать ввода (потому что, когда вы вводите '7', вы получаете' 7' назад, и все в порядке). Итак, где ваш вход в первом примере? Это не могут быть одни и те же программы. –

+0

«MinGW» включает в себя ** огромное ** разнообразие версий и конфигураций. Пожалуйста, будьте конкретны в отношении вашей инструментальной цепочки. –

+0

@LightnessRacesinOrbit Я отредактировал мой вопрос с дополнительной информацией: • Первого примера программы возбужденной, прежде чем я могу ввести что-нибудь • Я взял скриншот моего установщика MinGW, который, мы надеюсь, включает в себя номер версии и такие Спасибо –

ответ

0

Код, скорее всего, не содержит ошибок. но, как уже упоминалось выше, это проблема компилятора, поэтому переход на Cygwin от MinGW решил ошибку.

Код ошибки 0xc0000139 появляется при неправильной настройке, важные файлы пропали или повреждены. поэтому переключение на совершенно другой компилятор решило проблему.

надеюсь, что это поможет улучшить эти вопросы дорожим @Daniel D.

+0

Я заметил, что этот код будет работать где-то в другом месте, но не мой компьютер, есть ли какие-либо причина, по которой вы думаете, может быть, причина. Потому что я пытался понизить, и он все еще не работает. Спасибо –

+0

Попробуйте добавить для «cin» этот код (getline (cin, mystr);) 'cout <<« Как вас зовут? »; getline (cin, mystr); cout << "Hello" << mystr << ". \ N"; ' –

+0

Я тоже пробовал, но все еще не работал, однако я исправил проблему, переключившись на cygwin –

-1

ваш код выглядит правильно. Можете ли вы опубликовать файл makefile?

я примерить командную строку как-то просто, как: г ++ sandbox.cpp -o песочница

+0

Я попытался сделать файл и запустить с него и он вернет ошибку, которую вы можете найти в моем вопросе (только что отредактирован). Если мне все еще нужно, я могу опубликовать makefile тоже? –

+0

Это может быть проблема с компилятором, тем не менее, вы можете изменить свое главное на это: int main (int argc, char * argv []) – Kasper

+0

Это действительно проблема с компилятором, потому что я исправил ее, переключившись на cygwin, в любом случае. –