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

Я использую 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 в Console View в Eclipse, но ничего не отображается.

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

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

**** 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 и как мне сделать так, чтобы моя консольная программа C ++ отображала вывод?

Ответы [ 13 ]

22 голосов
/ 11 июля 2011

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

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

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

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

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

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

3 голосов
/ 10 сентября 2011

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

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

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

2 голосов
/ 20 марта 2012

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

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

2 голосов
/ 13 мая 2011

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

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

1 голос
/ 02 октября 2013

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

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

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

1 голос
/ 12 мая 2011

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

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

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

0 голосов
/ 02 марта 2015

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

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

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

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

C: \ MinGW \ bin

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

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

Имя: ПУТЬ

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

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

0 голосов
/ 01 ноября 2013

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

0 голосов
/ 17 июня 2013

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

Окружающая среда:

jdk1.6u18 64 бит + Eclipse Helios 64 бит + win7 64 бит

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

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

  1. Перейдите в Проект> Свойства> Параметры запуска / отладки

    Выберите файл .exe и нажмите «Редактировать»

  2. В теге «Environment» нажмите «New», установите его как:

"Имя: PATH"

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

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

...