Windows MSYS2 g++ 编译的 hello world C++ 段错误可能是由于缺少 std lib

问题描述 投票:0回答:1

按照 VS Code 说明安装 gcc、g++:https://code.visualstudio.com/docs/cpp/config-mingw

g++ -c -Wall -pedantic hw.cpp
g++ hw.o -o hw
./hw

运行并结束,控制台中没有任何内容。

gdb ./hw
run
backtrace

使用gdb:

[New Thread 2664.0x530]
[New Thread 2664.0xe9c]
[New Thread 2664.0x2d80]

Thread 1 received signal SIGSEGV, Segmentation fault.
0x00007fff76446326 in ?? () from C:\Program Files\gnuplot\bin\libstdc++-6.dll
(gdb) backtrace
#0  0x00007fff76446326 in ?? () from C:\Program Files\gnuplot\bin\libstdc++-6.dll
#1  0x00007fff764c4759 in ?? () from C:\Program Files\gnuplot\bin\libstdc++-6.dll
#2  0x00007fff764d3187 in ?? () from C:\Program Files\gnuplot\bin\libstdc++-6.dll
#3  0x00007ff6eb141476 in main () at hw.cpp:4

hw.cpp

#include <iostream>

int main() {
    std::cout << "Hello World!";
    return 0;
}

检查 gcc 是否有效。以下内容已使用 gcc 编译和运行并成功打印。

helloworld.c

#include <stdio.h>
int main() {
   printf("Hello, World!");
   return 0;
}

我怀疑库安装不正确。我该如何解决它?

c++ windows g++
1个回答
4
投票

根据gdb显示

C:\Program Files\gnuplot\bin\libstdc++-6.dll
,您的
PATH
环境变量中首先列出了gnuplot路径,这会导致您的
msys2
应用程序使用错误的
libstdc++.dll
,您需要将路径添加到以下
g++.exe
编译器文件夹到您的 PATH 环境变量的
begin

C:\msys64\mingw64\bin

或者如果您使用通用 CRT。

C:\msys64\ucrt64\bin

这样应用程序将首先加载它。

© www.soinside.com 2019 - 2024. All rights reserved.