字符串变量在 Eclipse 中不起作用 CDT

String variables don't work in Eclipse CDT

当我在 Eclipse CDT(MinGW 编译器)和 运行 程序中使用字符串变量时,它没有显示任何内容。这是我的代码:

#include <iostream>

using namespace std;

int main() {
    string hw = "Hello, world!";

    cout << hw << endl;

    return 0;
}

所以这并没有显示任何内容,但是当我只是执行 cout << "Hello, world!" << endl;它确实有效。

我也试过包括 <string><string.h>"string""string.h",但仍然没有成功。不过,相同的代码在 VC++ 和 Codeblocks 中确实有效。

我可以在我的机器上重现这个问题。输出没有出现。但这不是输出问题,而是在进入main之前实际上有两个问题:

  1. 程序无法启动。如果您尝试在 Windows 资源管理器中双击它,您将收到如下错误消息:

The program can't start because libgcc_s_dw2-1.dll is missing from your computer. Try reinstalling the program to fix this problem.

以上截图:

  1. 从 Eclipse 中启动时,此错误消息会被悄无声息地吞下,所以您怎么知道!

Solutions/Workarounds

您需要正确设置环境才能启动 MinGW 程序,因为它的 DLL 未安装在 Windows PATH 或搜索 DLL 的其他标准位置。

  1. C:\MinGW\bin 添加到您的 PATH
  2. 从 MinGW 中启动 Eclipse shell(与 1 的效果基本相同)
  3. 运行 程序处于调试模式,这导致程序作为 GCC 的子程序启动,并设置
  4. 其他选项(我没有尝试过)可能包括静态链接有问题的库,请参阅 The program can't start because libgcc_s_dw2-1.dll is missing
  5. 提交关于隐藏错误消息的 CDT bug

额外信息

如果您的程序可以编译,正如我根据您的评论确定的那样,更改包含可能无关紧要。

通过在 cout 周围添加一个无限循环,我可以立即识别出一些事情,而不仅仅是一个未显示的输出正在发生。在您的机器上尝试相同的操作,并在 MinGW shell 内部和外部尝试 运行 程序。