C++ 字符串类型未运行

Mic*_*man 0 c++ string

我在运行以下程序时遇到困难:

#include <string>
#include <iostream>

using namespace std;

int main()
{
    cout << "First line.";
    string s = "Hello World";
    cout << " After string.";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它编译得很好,但运行时不产生任何输出。

如果我注释掉该string s = "Hello World";行,则程序将按First Line. After string.预期运行并输出。

似乎每当我尝试声明一个字符串时,程序都会停止。当字符串位于未调用的函数内部时,也会发生这种情况。

我正在 Windows 上的 VSCode 中构建程序,我的编译器和版本是:g++ (x86_64-posix-sjlj-rev0, Built by MinGW-W64 project) 8.1.0

Mic*_*man 6

感谢@HolyBlackCat 的评论,我能够找到问题的根源,所以我将在这里为将来遇到相同问题的任何人发布答案。

我通过 Windows 资源管理器(双击)运行.exe,而不是通过命令行,然后弹出一个错误窗口:

无法在动态链接库中找到过程入口点 __gxx_personality_sj0

一旦我知道我正在寻找的错误,我发现了这个帖子:

程序入口点 __gxx_personality_sj0 无法位于...

正如另一篇文章所建议的,我libstdc++-6.dll在命令提示符中运行了 ,并且弹出了另一个错误窗口,指出该文件没有与之关联的应用程序。但是,该窗口的标题栏给了我错误文件的目录libstdc++-6.dll

为了解决这个问题,我将该mingw64目录移动到环境变量的顶部PATH,以便libstdc++-6.dll在编译时首先使用该目录中的文件。