【发布时间】:2023-03-29 23:55:02
【问题描述】:
在我的 Windows 7 32 位机器上安装 Eclipse Kepler 后遇到问题。我安装了 CDT 和 MinGW 编译器。我通过将 MinGW 添加到 PATH 来配置安装,并使用“Hello world”程序测试了我的配置,该程序有效。
奇怪的是,如果我实例化一个对象,什么都不会输出。它是 std::string 还是定制类都没有关系。如果我实例化它,则不会输出任何内容,即使它应该在实例化之前输出。如果我从命令行使用 cygwin gcc 编译它,完全相同的代码可以正常工作。如果我将工具链更改为 cygwin gcc,则没有任何变化(我已经使用“build all”重建了程序)。
没有显示错误,也没有列出任何问题。
这是最小的工作示例:
#include <iostream>
#include <string>
using namespace std;
class SayWorld{
public:
SayWorld(){
cout << "World!" << endl;
}
};
int main() {
//Only gets outputted, if the lines, that don't work are commented out:
cout << "Hello ";
// Works:
cout << "World!" << endl;
// Doesn't work:
// SayWorld sw;
// Also doesn't work:
// string str("World!");
// cout << str << endl;
return 0;
}
编辑 2: 正如这张 Cygwin-Bash-Terminal 的图片所示,我将错误范围缩小到 MinGW。 (文件在到 g++ 调用之间没有更改,并且包含上面的示例)
编辑 1(旧版) 工具链图片: -图片已删除-(认为没有必要)
【问题讨论】:
-
请进行完全重建,以确保您没有使用过时的二进制文件。因为在这里可以正常工作,另请参阅:ideone.com/fVfCCO
-
正如我所写:对我来说,当我从命令行构建它时,它也可以正常工作。我用“全部构建”多次重建它,干净,我什至尝试手动删除.exe ...没有帮助:-(
-
“如果我将工具链更改为 cygwin gcc 没有任何改变”,这很奇怪——它甚至不应该编译,因为 std::string 不在 c 中。你确定你没有运行另一个二进制文件,也许来自另一个项目?
-
@RandolphCarter:我添加了一张图片。 Eclipse 似乎只使用 Cygwin GCC 作为标题。当然它仍然使用 g++ 来编译我的代码,否则你肯定是对的。 (错误在编辑器中照常标记...)