使用std :: string或char指针

时间:2018-02-28 20:27:51

标签: c++ g++ mingw

我刚刚安装了MinGW,因为我想使用轻量级代码编辑器而不是Visual Studio或Codeblocks来编写代码,这两者都是我从未遇到过的问题。所以代码编译和工作,但由于某种原因,每次我尝试使用字符串或字符指针时崩溃。例如这段代码:

#include <iostream>

int main()
{
    std::string a;
    a = "Hello";
    std::cout << a;
    std::cin.get();
}

执行时抛出此错误:

error

但是这段代码:

#include <iostream>

int main()
{
    std::cout << "hello";
    std::cin.get();
}

完美运作:

image

(我已尝试使用std :: string和const char *,没有区别)

我安装了Visual Studio 2017,我不知道这可能是问题所在。 MinGW版本6.0.3。

PD:我只在路径环境中添加了C:/ MinGW / bin目录,不知道是否应该添加任何其他目录

1 个答案:

答案 0 :(得分:1)

修正了它!出于某种原因,g ++默认情况下会动态链接std库。由于我的程序没有找到dll,因此无法链接std :: string和std :: cout。解决方案是将-static-libstdc ++参数传递给g ++。

TL; DR: 而不是像这样直接编译:

g++ somesourcefile.cpp

试试这个论点:

g++ somesourcefile.cpp -static-libstdc++