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

Я использую Windows 7 64bit.

Я установил eclipse версии 3.6.2, cdt и MinGW. У меня есть консольная программа C++ в 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 для просмотра консоли в Eclipse, но ничего не отображает.

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

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

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

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

13 ответов


Я нашел обходной путь с этого сайта: 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.

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

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

в меню Выполнить -> Выполнить Конфигурации выберите конфигурацию, которую вы используете для этого .EXE-файл (или создать новый Конфигурация приложения C/C++) и выберите вкладку среда на правой панели. Там добавьте новую переменную с именем путь со значением c:\MinGW\bin (это путь по умолчанию к каталогу mingw\bin, используйте путь, действительный для вашей установки, если он где-то еще)
Edit: теперь я смотрю на сообщение от Vikyboss, и это на самом деле то же самое - установка переменной PATH в конфигурации Run. Установка переменной PATH в настройки > C / C++ (разверните его) > окружающая среда as описание Сидрапс не сработало для меня.

но я думаю, что статическое связывание библиотек может быть лучшим решением для вас. В меню -5 - > Свойства выберите C / C++ Build - > Настройки. В правой панели выберите конфигурацию, которую вы хотите изменить (вы можете выбрать все). Во вкладке Параметры Инструмента выберите MinGW C++ Linker - > Разное в правой панели в разделе флаги компоновщика тип -static. Сейчас .exe будет раздут по размеру библиотек (в моем случае ок. + 900kB для примера Hello world, требующего 2 DLL), но он будет независимым в любых библиотеках.

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


я исправил проблему на моем ПК с windows 7 x64. В окне Eclipse выберите Настройки > C / C++ (разверните его) > среда > добавить:

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

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


Я нахожу причину, просто потому, что я использую 64bit eclipse!

Я обращаюсь к 32-битному eclipse, тот же код работает нормально.


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

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


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

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

наконец, промывка буфера каждый раз с помощью (Я сделал все это на Win 7 64 бит - но я использовал 32-битную версию Eclipse Galileo)


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

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

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


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

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

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

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

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

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

Я понял это и вот это () мой устранение:

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

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


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


Я столкнулся с подобной проблемой.

среда:

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

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

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

  1. перейти к "Проект" > "свойства" > Пуск/Настройки отладка

    выбрать .exe файл и нажмите "Edit"

  2. в теге "окружающая среда" , нажмите "New", установите его как:

"название:Путь"

"значение:c:\MinGW в папку\bin"

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


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


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

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

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

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

C:\MinGW\bin

пример: C:\SomeDirectory; C:\Another;C:\MinGW\bin

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

название: путь

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

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