使用 std::string 或 char 指针时 G++ 编译的应用程序崩溃
G++ compiled application crashes when using std::string or char pointer
我刚刚安装了 MinGW,因为我想使用轻量级代码编辑器而不是 Visual Studio 或 Codeblocks 来编写代码,这两者我都没有遇到过问题。因此代码可以编译并运行,但由于某种原因,每次我尝试使用字符串或字符指针时它都会崩溃。例如这段代码:
#include <iostream>
int main()
{
std::string a;
a = "Hello";
std::cout << a;
std::cin.get();
}
执行时抛出此错误:
但是这段代码:
#include <iostream>
int main()
{
std::cout << "hello";
std::cin.get();
}
完美运行:
(我试过 std::string 和 const char* 都没有区别)
我安装了 Visual studio 2017,我不知道这是否是问题所在。
MinGW 版本 6.0.3.
PD: 我只添加了C:/MinGW/bin目录到Path环境,不知道是否应该添加任何其他目录
已修复!出于某种原因,默认情况下 g++ links 是动态的 std 库。由于我的程序没有找到 dll,因此无法 link std::string 和 std::cout。解决方案是将 -static-libstdc++ 参数传递给 g++.
长话短说:
而不是像这样直接编译:
g++ somesourcefile.cpp
试试这个论点:
g++ somesourcefile.cpp -static-libstdc++
我刚刚安装了 MinGW,因为我想使用轻量级代码编辑器而不是 Visual Studio 或 Codeblocks 来编写代码,这两者我都没有遇到过问题。因此代码可以编译并运行,但由于某种原因,每次我尝试使用字符串或字符指针时它都会崩溃。例如这段代码:
#include <iostream>
int main()
{
std::string a;
a = "Hello";
std::cout << a;
std::cin.get();
}
执行时抛出此错误:
但是这段代码:
#include <iostream>
int main()
{
std::cout << "hello";
std::cin.get();
}
完美运行:
(我试过 std::string 和 const char* 都没有区别)
我安装了 Visual studio 2017,我不知道这是否是问题所在。 MinGW 版本 6.0.3.
PD: 我只添加了C:/MinGW/bin目录到Path环境,不知道是否应该添加任何其他目录
已修复!出于某种原因,默认情况下 g++ links 是动态的 std 库。由于我的程序没有找到 dll,因此无法 link std::string 和 std::cout。解决方案是将 -static-libstdc++ 参数传递给 g++.
长话短说: 而不是像这样直接编译:
g++ somesourcefile.cpp
试试这个论点:
g++ somesourcefile.cpp -static-libstdc++