我有一台Windows 7 64位PC,我正在尝试安装一个免费的C ++ IDE,所以我选择安装带有CDT的Eclipse Helios。
对于g ++,make和gdb我根据本教程安装了msys和mingw: http://wiki.wxwidgets.org/HowTo:_Install_MSYS_and_MinGW_for_use_with_Eclipse_CDT
版本是:
所以它应该与我的64位CPU兼容。
然而,当我尝试使用eclipse运行一个非常简单的程序时,我在控制台上看不到任何内容。源代码是:
#include <iostream>
using namespace std;
int main()
{
int i;
cout << "Enter an integer: " << endl;
cin >> i;
cout << endl << "i is " << i << endl;
return 0;
}
构建很好,当我使用命令(Windows控制台)启动.exe时,行为符合预期。 但是使用Eclipse控制台我看不到运行和调试输出只是: “输入一个整数:”,然后当我输入一个数字并点击输入时,它什么都不做。
有人知道如何解决这个问题吗?
谢谢,
纪尧姆
PS:我使用工具链“Linux GCC”,“MinGW GCC”我在控制台中什么都没有。
答案 0 :(得分:139)
这对我使用MinGW在Windows 7上64位安装Eclipse起了作用:
右键单击您的项目。选择“属性”。
选择新窗口左侧的“运行/调试设置”属性。
在右侧窗口中,单击您的可执行文件以突出显示(即 - Test.exe),然后单击“编辑”。
在“环境”标签中,点击“新建”
姓名:路径
值: MinGW bin目录的路径。 (对我来说,这是:C:\devcore\MinGW\bin
)
在所有窗口上单击“确定”关闭。
再试一次,它应该将输出打印到屏幕上。
答案 1 :(得分:8)
您需要设置链接器 我正在使用MinGW。
按照以下步骤操作。
Goto Project > Properties > C/C++ Build > Settings > Tool Settings (Tab) > MinGW C++ Linker (Option) > Add Command (g++ -static-libgcc -static-libstdc++) (default command is only g++)
答案 2 :(得分:7)
在窗口中 - &gt;首选项&GT; C / C ++ - &gt;构建 - &gt;环境 为编译器添加变量。例如,我补充说: MINGW,值为“C:\ MinGW \ bin”
答案 3 :(得分:5)
在64位版本的eclipse中已经注意到这个控制台错误:
http://www.eclipse.org/forums/index.php?t=msg&th=197552&start=0&S=2a2b64e1f1404705c0214976bd477428
解决方法是安装32位日食
答案 4 :(得分:2)
我遇到了同样的问题,因为在一台PC上安装了多个gcc。但是Greg's solution只对我有用。
在我的情况下,明确地没有在应用程序中完成刷新。虽然C ++程序经常使用std::cout << ... << std::endl
endl
执行刷新,但我的程序使用实际的C输出,例如通常的printf
。在cmd窗口中启动程序时,可以直接看到printf
。然而在eclipse控制台中他们失踪了。因此一个
fflush(stdout);
在printf
为我做了这件事之后。这可能是eclipse控制台实现中的一个问题。我想这就是为什么修复Path对这里的某些人不起作用的原因。
替代解决方案,而不是在&#34; Run&#34;中设置PATH。设置是使用批处理文件启动整个eclipse,看起来基本上是这样的:
set PATH=<mymingwlocation>\bin;%PATH%
start <myeclipselocation>\eclipse.exe
然后,默认情况下,任何运行配置都将使用正确的MingW位置。这也可能解决使用错误的gcc可能引起的其他问题。
答案 5 :(得分:1)
您是否尝试过使用管理员权限执行eclipse.exe?它对我有用!
答案 6 :(得分:1)
这个问题在64/32位日食Kepler CDT上运行在openCV / wxWidgets工具Win7上,使用MinGW构建。
如果有人在遇到此问题时遇到此问题并且正在使用openCV,您就会知道在互联网上有许多过时的openCV构建/安装说明。
我曾经去过Build Build - &gt;链接器 - &gt;杂项和链接标志文本输入框内,键入
-Wl,--subsystem,windows -mwindows
但是,这会禁止cout输出到Windows中的命令行终端。
进行更多挖掘看起来是有意的,显然-mwindows涉及将STDOUT从命令行专门指向类似GUI的应用程序。
此外,删除-mwindows
并且只需离开-Wl,--subsystem,windows
即可完成重定向STDOUT的任务,无论如何都要远离命令行。
现在请注意,我还没有在涉及wxWidgets和openCV的hello world程序之外构建任何东西,所以我不想在GUI的一部分做一个cout所以我没有&#39 ; t知道现在该功能是否会被破坏,或者是否会打印到GUI对象以及命令行终端。
答案 7 :(得分:0)
或者设置链接器选项-static
。
至少对我有用。
答案 8 :(得分:0)