Ответ 1
Я нахожу причину, только потому, что я использую 64-битное затмение!
Я перехожу к 32-битовому затмению, тот же код отлично работает.
Я использую 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 и как я могу сделать вывод на консоль С++?
Я нахожу причину, только потому, что я использую 64-битное затмение!
Я перехожу к 32-битовому затмению, тот же код отлично работает.
Я нашел обходной путь с этого сайта: 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 файл в каталог вашего проекта (а также в подкаталог 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. Алесь Члубный
Я исправил проблему на моем Windows 7 x64 PC. В окне Eclipse перейдите в "Настройки" > "C/С++" ( "Развернуть его" ) > "Среда" > "Добавить":
"Name:PATH"
"Value:C:\MinGW\bin"
Если это не исправить. Попробуйте добавить вышеперечисленное к переменным системной среды на вашем компьютере в меню "Компьютер" > "Расширенные настройки системы"
Моя проблема с отображением hello world (64-битной Windows7) в консоли была решена, когда я запускал eclipse в качестве администратора.
Я добавил путь к переменной среды C:\MinGW\bin
, а затем запустил eclipse в качестве администратора
Я создал приложение Hello World С++ Project (MinGW GCC) от мастера Eclipse, вырезал и вставил ваш код и скомпилировал его. Затем до запуска я сократил ваш цикл до 10, и все получилось отлично.
Вы не говорите, как вы создали свой проект, но, скорее всего, ваш недостающий элемент включает директиву или путь к библиотеке. Также я не вижу необходимости включать или setbuf (stdout, NULL). Я также считаю полезным при устранении неполадок, чтобы НЕ вносить в область полного пространства имен. Скорее сделайте это: используя std:: cout; используя std:: cin;
Наконец, каждый раз промывая буфер с помощью < епсИ; похоже на overkill, добавление простого \n в конец строки было бы более эффективным.
(Я сделал все это на Win 7 64 бит - но я использовал 32-разрядную версию Eclipse Galileo)
Если вы используете компилятор MinGW,
Добавьте
-static-libgcc -static-libstdc++
в качестве флагов компоновщика для вашего нового проект. Этот текст следует добавить в поле флажков Linker, которое можно найти, щелкнув правой кнопкой мыши на новом проекте в проекте Explorer и нажмите "Свойства". В разделе "Свойства проекта", разверните меню C/С++ Build и нажмите "Настройки". В рамках инструмента Вкладка "Параметры", разверните меню LinkGuilder MinGW С++ и нажмите Разное. Добавьте текст в поле флажков связующего, затем нажмите Применить кнопку.
Для меня установка 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);
У меня возникла проблема с моим 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.
Просто добавил C:\MinGW\bin в переменную окружения "Путь" в 64-разрядной версии Windows 7. Теперь консоль выводит сообщения
Я столкнулся с аналогичной проблемой.
Среда:
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, но, похоже, не работал.
Работает для меня, перейдя на Administator на Eclipse Kepler 64bit.
В случае, если кто-то заинтересован, я нашел, как исправить его навсегда в Windows XP (может работать в другой версии Windows), без необходимости указывать переменные каждого исполняемого файла и т.д.
Меню "Пуск" RightClick on MyComputer Свойства Дополнительные параметры Переменные среды
Там, в поле "Пользовательские переменные",
C:\MinGW\BIN
Пример: C:\SomeDirectory; C:\Другого; C:\MinGW\BIN
Имя: PATH
Значение: C:\MinGW\bin
Принять все, и вы должны получить консольный вывод:)