it-swarm.com.ru

Eclipse CDT с использованием MinGW не выводится в консоли

У меня 64-битный ПК с Windows 7, и я пытаюсь установить бесплатную C++ IDE, поэтому я решил установить Eclipse Helios с CDT.

Для g ++, make и gdb я установил msys и mingw в соответствии с этим руководством: http://wiki.wxwidgets.org/HowTo:_Install_MSYS_and_MinGW_for_use_with_Eclipse_CDT

Версии:

  • make: GNU make 3.81
  • g ++: 4.5.0
  • gDB: 7,1

Так что он должен быть совместим с моим 64-битным процессором.

Однако, когда я пытаюсь запустить очень простую программу с Eclipse, я ничего не вижу на консоли. Исходный код:

#include <iostream>

 using namespace std;

 int main()
 {
    int i;

    cout << "Enter an integer: " << endl;
    cin >> i;
    cout << endl << "i is " << i << endl;

    return 0;
 }

Сборка в порядке, и когда я запускаю .exe с помощью команды (консоль Windows), поведение такое же, как и ожидалось . Но с консолью Eclipse я ничего не вижу при запуске и с отладкой вывод просто: "Введите integer: ", затем, когда я набираю число и нажимаю ввод, ничего не происходит.

Кто-нибудь знает, как это исправить, пожалуйста?

Спасибо,

Гийом

PS: я использую набор инструментов "Linux GCC", с "MinGW GCC" у меня вообще ничего нет в консоли.

37
Guillaume

Эта консольная ошибка была замечена в 64-битных версиях Eclipse:

http://www.Eclipse.org/forums/index.php?t=msg&th=197552&start=0&S=2a2b64e1f1404705c0214976bd477428

Обходной путь должен установить 32-разрядное Затмение

5
guest

Это сработало для меня на 64-битной установке Eclipse на Windows 7 с использованием MinGW:

Щелкните правой кнопкой мыши по вашему проекту. Выберите «Свойства».

Выберите свойство «Run/Debug Settings» в левой части нового окна.

В правом окне щелкните свой исполняемый файл, чтобы выделить его (т. Е. Test.exe), и нажмите «Изменить».

На вкладке «Окружающая среда» нажмите «Новый»

Название: ДОРОЖКА
Значение: Путь к вашей папке bin MinGW, (Для меня это было: C:\devcore\MinGW\bin

Нажмите «ОК» во всех окнах, чтобы закрыть.

Попробуйте запустить снова, он должен напечатать вывод на экран.

138
ossys

Вам нужно настроить компоновщик Я использую MinGW.

Выполните следующие шаги.

Goto Project > Properties > C/C++ Build > Settings > Tool Settings (Tab) > MinGW C++ Linker (Option) > Add Command (g++ -static-libgcc -static-libstdc++)   (default command is only g++)
8
Dhiral Pandya

решение purlogic работает . Вместо этого, чтобы установить это для каждого проекта, я обнаружил, что его можно установить глобально:

В Window -> Preferences-> C/C++ -> Build -> Environment Добавить переменную для вашего компилятора. например, я добавил: MINGW со значением "C:\MinGW\bin"

7
Yifu

Я столкнулся с той же проблемой из-за нескольких установок gcc на одном ПК. Но решение Грега сработало только частично для меня.

В моем случае сброс не был сделан в приложении явно. В то время как программы на C++ часто используют std::cout << ... << std::endl, где endl выполняет сброс, моя программа использовала фактический C-вывод, такой как обычный printf. printf можно увидеть непосредственно при запуске программы в окне cmd. Однако в консоли Eclipse они отсутствовали. Отсюда 

fflush(stdout);

после того, как printf сделал это для меня. Это может быть проблемой в реализации консоли Eclipse. Я думаю, именно поэтому исправление Пути не сработало для некоторых людей здесь.

Альтернативное решение вместо установки PATH в настройках «Выполнить» состоит в том, чтобы запустить весь Eclipse с помощью пакетного файла, который по сути выглядит следующим образом:

set PATH=<mymingwlocation>\bin;%PATH%
start <myeclipselocation>\Eclipse.exe

Тогда любая конфигурация прогона будет использовать правильное расположение MingW по умолчанию. Это также может исправить другие проблемы, которые могут возникнуть при использовании неправильного gcc.

2
michael_s

Вы пытались запустить Eclipse.exe с правами администратора ?? это сработало для меня!

1
Roberto

Была ли эта проблема на 64-/32-битном Eclipse Kepler CDT для работы с утилитой openCV/wxWidgets, Win7, с использованием MinGW для сборки.

Если кто-то сталкивался с этим во время возникновения этой проблемы и работает с openCV, вы уже знаете, что по всему Интернету существует множество устаревших инструкций по сборке/установке openCV. 

Мне нужно было зайти в «Настройки компоновки» -> «Линкер» -> «Разное» и внутри текстового поля ввода «Флажки компоновщика» введите -Wl,--subsystem,windows -mwindows Однако это отключает вывод cout на терминал командной строки в Windows.

Дальнейшее копание выглядит преднамеренно, очевидно, -mwindows включает в себя направление STDOUT от командной строки специально к GUI-подобному приложению.

Кроме того, удаление -mwindows и просто оставление в -Wl,--subsystem,windows решает задачу перенаправления STDOUT в любом случае из командной строки. 

Теперь обратите внимание, я еще ничего не создал за пределами программы hello world, включающей wxWidgets и openCV, поэтому я не собираюсь делать нарезку в части GUI, поэтому я не знаю, будет ли эта функциональность теперь будет сломан или если он будет распечатан на объект GUI, а также терминал командной строки.

1
JoeManiaci

Добавьте переменную PATH (PATH = "ваш путь к каталогу MinGW/bin") в ваш проект C++, выполнив Run -> Run Configurations -> на вкладке Environment.

 enter image description here

0
zaursh

Или установите параметр компоновщика -static. У меня работает как минимум.

0
rmk