Программа 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++ и нажмите Разнообразный. Добавить текст в Компоновщик поле флаги, затем нажмите кнопку Кнопка применить.
для меня установка 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".
следующий метод работал для меня:
-
перейти к "Проект" > "свойства" > Пуск/Настройки отладка
выбрать .exe файл и нажмите "Edit"
в теге "окружающая среда" , нажмите "New", установите его как:
"название:Путь"
"значение:c:\MinGW в папку\bin"
на самом деле, я уже установил "C:\MinGW\bin" как переменная среды Windows PATH, но она, похоже, не работает.
в случае, если кто-то заинтересован, я нашел, как исправить это навсегда на Windows XP (может работать в другой версии windows, хотя) без необходимости указывать переменные каждого исполняемого файла и такие:
Меню "Пуск"> Правой Кнопкой Мыши на MyComputer > свойства > Дополнительные Параметры > Переменные Среды
там, в поле "пользовательские переменные",
- если есть переменная среды под названием PATH, выберите Изменить и добавьте эту информацию в конце стоимостью поле, разделенное точкой с запятой:
C:\MinGW\bin
пример: C:\SomeDirectory; C:\Another;C:\MinGW\bin
- если переменная окружения PATH не exist, добавьте новый с этой информацией:
название: путь
значение: C:\MinGW\bin
принять все, и вы должны получить вывод консоли:)