使用 MinGW 的 Eclipse CDT 不在控制台中输出
Posted
技术标签:
【中文标题】使用 MinGW 的 Eclipse CDT 不在控制台中输出【英文标题】:Eclipse CDT using MinGW does not output in console 【发布时间】:2011-03-27 11:23:23 【问题描述】:我有一台 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
版本是:
make: GNU make 3.81 g++:4.5.0 gdb:7.1所以它应该与我的 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 控制台,我看不到运行和调试的输出只是: “输入一个整数:”,然后当我输入一个数字并按 Enter 时,它什么也不做。
请问有人知道怎么解决吗?
谢谢,
纪尧姆
PS:我使用工具链“Linux GCC”,而“MinGW GCC”在控制台中什么都没有。
【问题讨论】:
在 Indigo 32 位上遇到同样的问题; purlogic 的解决方案奏效了。 【参考方案1】:这对我使用 MinGW 在 Windows 7 上安装 64 位 Eclipse 有效:
右键单击您的项目。选择“属性”。
选择新窗口左侧的“运行/调试设置”属性。
在右侧窗口中,单击要突出显示的可执行文件(即 - Test.exe),然后单击“编辑”。
在环境选项卡中,点击“新建”
名称:路径
值:MinGW bin 目录的路径。 (对我来说这是:C:\devcore\MinGW\bin
)
在所有窗口上单击“确定”关闭。
再次尝试运行,它应该将输出打印到屏幕上。
【讨论】:
太棒了!你是怎样找到它的?你是错误的创造者吗? :-) 在调试模式下它让我很困惑,命令它很好。 +1 非常感谢您找到解决此问题的方法 :) 这应该是正确答案,不用重新安装eclipse!! 它对我有用,令人惊讶的是我添加了已经在 windows 环境中设置了这个 PATH 变量,但它仍然没有工作。 @Ivan:完全同意你的看法。这应该是正确答案!! cygwin 也为我工作:)【参考方案2】:您需要设置链接器 我正在使用 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++)
【讨论】:
在我的例子中,上述步骤实际上是阻止 Eclipse 构建二进制文件。【参考方案3】:purlogic 的解决方案有效。 而不是为每个项目设置它,我发现它可以全局设置:
在窗口中 -> 首选项-> C/C++ -> 构建 -> 环境 为您的编译器添加一个变量。例如,我补充说: MINGW,值为“C:\MinGW\bin”
【讨论】:
我这样做了,有时有效,有时无效。我正在使用 Eclipse Juno。 那么purlogic的解决方案在哪里?!好像没找到【参考方案4】:在 64 位版本的 eclipse 中发现了这个控制台错误:
http://www.eclipse.org/forums/index.php?t=msg&th=197552&start=0&S=2a2b64e1f1404705c0214976bd477428
解决方法是安装 32 位 eclipse
【讨论】:
在 Indigo 32 位中也可能发生 - 尝试下面的 purlogic 解决方案。【参考方案5】:我遇到了同样的问题,因为在一台 PC 上安装了多个 gcc。但Greg's solution 只对我有部分作用。
在我的情况下,刷新没有在应用程序中明确完成。虽然 C++ 程序经常使用std::cout << ... << std::endl
,其中endl
进行刷新,但我的程序使用了实际的C 输出,例如通常的printf
。在 cmd 窗口中启动程序时可以直接看到 printf
。但是在 Eclipse 控制台中,它们丢失了。因此,一个
fflush(stdout);
在printf
为我做了这件事之后。这可能是 Eclipse 控制台实现中的一个问题。我想这就是为什么修复路径对这里的某些人不起作用的原因。
替代在“运行”设置中设置 PATH 的替代解决方案是使用批处理文件启动整个 eclipse,它基本上看起来像这样:
set PATH=<mymingwlocation>\bin;%PATH%
start <myeclipselocation>\eclipse.exe
那么默认情况下,任何运行配置都会使用正确的 MingW 位置。这也可能解决使用错误 gcc 可能引起的其他问题。
【讨论】:
fflush(stdout) ---- 是关键。工作得很好。谢谢!【参考方案6】:您是否尝试过以管理员权限执行 eclipse.exe?它对我有用!
【讨论】:
【参考方案7】:在 64 位/32 位 eclipse Kepler CDT 上使用 MinGW 构建 openCV/wxWidgets 工具 Win7 时遇到此问题。
如果有人在遇到此问题并使用 openCV 时遇到此问题,您就会知道互联网上有许多过时的 openCV 构建/安装说明。
我有一个是去构建设置->链接器->杂项并在链接器标志文本输入框内,输入
-Wl,--subsystem,windows -mwindows
但是,这会禁止 cout 输出到 Windows 中的命令行终端。
做更多的挖掘这看起来是有意的,显然 -mwindows 涉及将 STDOUT 从命令行专门引导到类似 GUI 的应用程序。
此外,删除-mwindows
并留在-Wl,--subsystem,windows
中同样可以完成重定向STDOUT 的任务,使其远离命令行。
现在请注意,除了涉及 wxWidgets 和 openCV 的 hello world 程序之外,我还没有构建任何东西,所以我还没有在 GUI 的一部分中做 cout,所以我不知道是否该功能现在将被破坏,或者如果它会打印到 GUI 对象以及命令行终端。
【讨论】:
【参考方案8】:或者设置链接器选项-static
。
至少对我有用。
【讨论】:
【参考方案9】:通过运行 -> 运行配置 -> 在环境选项卡中将 PATH 变量(PATH="您的 MinGW/bin 目录路径")添加到您的 C++ 项目中
【讨论】:
以上是关于使用 MinGW 的 Eclipse CDT 不在控制台中输出的主要内容,如果未能解决你的问题,请参考以下文章
带有 MinGW GCC 的 Eclipse CDT 生成错误 127
安装/使用 dlib 以与 Eclipse CDT、MinGW 和 OpenCV 一起使用时出错
windows 下 用eclipse开发c,不在同一目录下的头文件怎么引入?