我在运行以下程序时遇到困难:
#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
感谢@HolyBlackCat 的评论,我能够找到问题的根源,所以我将在这里为将来遇到相同问题的任何人发布答案。
我通过 Windows 资源管理器(双击)运行.exe,而不是通过命令行,然后弹出一个错误窗口:
无法在动态链接库中找到过程入口点 __gxx_personality_sj0
一旦我知道我正在寻找的错误,我发现了这个帖子:
程序入口点 __gxx_personality_sj0 无法位于...
正如另一篇文章所建议的,我libstdc++-6.dll在命令提示符中运行了 ,并且弹出了另一个错误窗口,指出该文件没有与之关联的应用程序。但是,该窗口的标题栏给了我错误文件的目录libstdc++-6.dll。
为了解决这个问题,我将该mingw64目录移动到环境变量的顶部PATH,以便libstdc++-6.dll在编译时首先使用该目录中的文件。
| 归档时间: |
|
| 查看次数: |
271 次 |
| 最近记录: |