字符串变量不适用于Eclipse CDT

时间:2015-12-19 19:17:02

标签: c++ eclipse string eclipse-cdt

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

#include <iostream>

using namespace std;

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

    cout << hw << endl;

    return 0;
}

所以这并没有显示任何东西,但当我只做cout&lt;&lt; &#34;你好,世界!&#34; &LT;&LT; ENDL;它确实有用。

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

1 个答案:

答案 0 :(得分:2)

我可以在我的机器上重现此问题。输出不会出现。但这不是一个输出问题,但在你到达main之前实际上有两个问题:

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

    程序无法启动,因为缺少libgcc_s_dw2-1.dll   你的电脑。尝试重新安装该程序以解决此问题。

    上面的截图:

    screenshot of above quoted error

    1. 从Eclipse内部启动时,会默默地吞下此错误消息,所以您应该怎么知道!
    2. 解决方案/变通方法

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

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

        如果您的程序已编译,我相信它会根据您的评论进行编译,则更改包含可能无关紧要。

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