Программа С++, написанная в Eclipse с использованием Windows и MinGW, не может отображать вывод в консольный вид

Я использую 64-разрядную версию Windows 7.

Я установил eclipse версии 3.6.2, cdt и MinGW. У меня есть консольная программа на С++ в Eclipse:

#include <iostream>
#include <cstdio>
using namespace std;

int main() {
    setbuf(stdout, NULL);

    for (int i = 0; i < 10000000; i++) {
        cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    }
    int val;
    cin >> val;

    return 0;
}

Если я запустил эту консольную программу, она должна отображать Hello world в Console View в Eclipse, но ничего не отображается.

Если я перейду в папку отладки и запустил exe, он будет печатать на консоли.

Если я сделаю некоторую ошибку синтаксиса, в представлении консоли Eclipse появится что-то, например:

**** Internal Builder is used for build ****
g++ -O0 -g3 -Wall -c -fmessage-length=0 -osrc\hh.o ..\src\hh.cpp
..\src\hh.cpp: In function 'int main()':
..\src\hh.cpp:17:3: error: expected ';' before 'return'
Build error occurred, build is stopped
Time consumed: 255 ms.   

Почему ничего не отображается в представлении консоли Eclipse и как я могу сделать вывод на консоль С++?

Ответы

Ответ 1

Я нахожу причину, только потому, что я использую 64-битное затмение!

Я перехожу к 32-битовому затмению, тот же код отлично работает.

Ответ 2

Я нашел обходной путь с этого сайта:    http://www.eclipse.org/forums/index.php?=42e862594001fa4469bbc834885d545f&t=msg&th=197552

В этой связи просмотрите ответ "Нет реального имени".

Если ссылка идет вниз, вот содержание:

Environment: jdk1.6u18 64bit + Eclipse Helios 64bit + win7 64bit

No console output at "Run", but output correctly at "Debug".

The following method worked for me:

1.  Goto Project->Properties->Run/Debug Settings, choose the .exe file 
and press "Edit"

2.  In the "Environment" tag, press "New", set it as: 
    "Name:PATH"
    "Value:C:\MinGW\bin"

In fact, I have already set "C:\MinGW\bin" in windows PATH environment 
variable, but it seemed to not work.

Ответ 3

Проблема в том, что ваша программа использует библиотеки dll из MinGW - попробуйте запустить exe файл вручную, он сообщит о некоторой ошибке в отношении отсутствующих DLL.

Решение может заключаться в том, что вы копируете необходимые DLL файлы в .exe файл в каталог вашего проекта (а также в подкаталог Release или Debug, зависит от того, какой именно .exe выполняется с помощью команды Run).

Или в меню "Выполнить" → "Выполнить конфигурацию" выберите конфигурацию, которую вы используете для этого .exe файла (или создайте новую конфигурацию приложения C/С++), и выберите вкладку "Среда" на правой панели. Добавьте новую переменную с именем PATH со значением c:\MinGW\bin (это путь по умолчанию к директории mingw\bin, используйте путь, действительный для вашей установки, если он где-то еще )
Изменить: теперь я смотрю сообщение от Vikyboss, и это на самом деле то же самое - установка переменной PATH в конфигурации Run. Настройка переменной PATH в настройках > C/С++ (развернуть ее) > Окружение, описанное Sydraps, не работает для меня.

Но я думаю, что статическая привязка этих библиотек может быть лучшим решением для вас. В меню Project → Properties выберите C/С++ Build → Settings. На правой панели выберите "Конфигурация", которую вы хотите изменить (вы можете выбрать "Все" ). В вкладке "Параметры инструмента" выберите MinGW С++ Linker → Miscellaneous и на правой панели в флагах Linker введите -статический. Теперь .exe будет раздуваться размером библиотек (в моем случае около + 900 КБ для примера Hello World, требующим 2 DLL), но он будет независим в любых библиотеках.

Я надеюсь, что это будет полезно для тех, кто пытается начать с Eclipse C/С++, и задается вопросом, почему в консоли нет мира Hello. Алесь Члубный

Ответ 4

Я исправил проблему на моем Windows 7 x64 PC. В окне Eclipse перейдите в "Настройки" > "C/С++" ( "Развернуть его" ) > "Среда" > "Добавить":

"Name:PATH"
    "Value:C:\MinGW\bin"

Если это не исправить. Попробуйте добавить вышеперечисленное к переменным системной среды на вашем компьютере в меню "Компьютер" > "Расширенные настройки системы"

Ответ 5

Моя проблема с отображением hello world (64-битной Windows7) в консоли была решена, когда я запускал eclipse в качестве администратора.

Я добавил путь к переменной среды C:\MinGW\bin, а затем запустил eclipse в качестве администратора

Ответ 6

Я создал приложение Hello World С++ Project (MinGW GCC) от мастера Eclipse, вырезал и вставил ваш код и скомпилировал его. Затем до запуска я сократил ваш цикл до 10, и все получилось отлично.

Вы не говорите, как вы создали свой проект, но, скорее всего, ваш недостающий элемент включает директиву или путь к библиотеке. Также я не вижу необходимости включать или setbuf (stdout, NULL). Я также считаю полезным при устранении неполадок, чтобы НЕ вносить в область полного пространства имен. Скорее сделайте это:   используя std:: cout;   используя std:: cin;

Наконец, каждый раз промывая буфер с помощью < епсИ; похоже на overkill, добавление простого \n в конец строки было бы более эффективным.  (Я сделал все это на Win 7 64 бит - но я использовал 32-разрядную версию Eclipse Galileo)

Ответ 7

Если вы используете компилятор MinGW,

Добавьте -static-libgcc -static-libstdc++ в качестве флагов компоновщика для вашего нового проект. Этот текст следует добавить в поле флажков Linker, которое можно найти, щелкнув правой кнопкой мыши на новом проекте в проекте Explorer и нажмите "Свойства". В разделе "Свойства проекта", разверните меню C/С++ Build и нажмите "Настройки". В рамках инструмента Вкладка "Параметры", разверните меню LinkGuilder MinGW С++ и нажмите Разное. Добавьте текст в поле флажков связующего, затем нажмите Применить кнопку.

http://orfe.princeton.edu/help/article-296

Ответ 8

Для меня установка 32-разрядных версий Eclipse (Indigo 3.7) и 32-разрядной Java JDK/JRE не работала. Я использую гораздо более быстрое решение из Eclipse CDT/User/FAQ:

Цитата из Eclipse CDT/User/FAQ - консоль Eclipse не показывает вывод в Windows:

Консоль Eclipse не отображает вывод в Windows In Eclipse CDT on Windows, стандартный вывод программы, запускаемой или отлаженной, полностью буферизован, потому что он не подключен к консоли Windwos, а к труба. См. Ошибку 173732 для более подробной информации. Либо добавьте вызовы fflush после каждый printf или добавить следующие строки в начало основного функция:

setvbuf(stdout, NULL, _IONBF, 0); 
setvbuf(stderr, NULL, _IONBF, 0);

Ответ 9

У меня возникла проблема с моим eclipse-cdt, новым проектом С++ > hello world (cygwin gcc), щелкните правой кнопкой мыши на exe файле, запустите, и ничего не отображается на консоли. Это было то же самое с проектом c.

Я видел, что моя версия eclipse уже была 32-битной.

Я понял это и вот (мое) решение:

В eclipse cdt имеется несколько профилей компиляции: выпуск и отладка. Профиль по умолчанию в eclipse cdt - отладка. Таким образом, запуск exe с использованием "run as" не работает, вы должны запустить его с помощью "debug as". В моем случае я использовал последнюю установку cygwin с установленной gcc, но с gdb еще не установлен. Мне пришлось установить пакет gdb в cygwin, используя cygwin-setup. Я переработал exe, используя "debug as", и он сработал.

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

Ответ 10

Просто добавил C:\MinGW\bin в переменную окружения "Путь" в 64-разрядной версии Windows 7. Теперь консоль выводит сообщения

Ответ 11

Я столкнулся с аналогичной проблемой.

Среда:

jdk1.6u18 64bit + Eclipse Helios 64bit + win7 64bit

Нет вывода консоли в "Run", но правильно выводится на "Debug".

Для меня работал следующий метод:

  • Перейдите в Project > Properties > Run/Debug Settings

    Выберите файл .exe и нажмите "Изменить"

  • В теге "Окружающая среда" нажмите "Создать", установите его как:

"Имя: PATH"

"Значение: C:\MinGW\Bin"

Фактически, я уже установил "C:\MinGW\bin" в качестве переменной среды Windows PATH, но, похоже, не работал.

Ответ 12

Работает для меня, перейдя на Administator на Eclipse Kepler 64bit.

Ответ 13

В случае, если кто-то заинтересован, я нашел, как исправить его навсегда в Windows XP (может работать в другой версии Windows), без необходимости указывать переменные каждого исполняемого файла и т.д.

Меню "Пуск" RightClick on MyComputer Свойства Дополнительные параметры Переменные среды

Там, в поле "Пользовательские переменные",

  • Если существует переменная среды, называемая PATH, выберите "Изменить" и добавьте эту информацию в конец поля "Значение", разделенное точкой с запятой:

C:\MinGW\BIN

Пример: C:\SomeDirectory; C:\Другого; C:\MinGW\BIN

  • Если переменная окружения PATH не существует, добавьте новую с этой информацией:

Имя: PATH

Значение: C:\MinGW\bin

Принять все, и вы должны получить консольный вывод:)