专栏文章

解决 g++ 编译器出现 BUG

科技·工程参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miohf3o3
此快照首次捕获于
2025/12/02 19:15
3 个月前
此快照最后确认于
2025/12/02 19:15
3 个月前
查看原文
经常使用 g++.exe 编译器 (并使用 VSCodeDev-C++ 不包含在内,编译器版本过于古老) 的 OIers 们都知道,g++.exe 在新版本有以下诟病。
部分符号指代注意
  1. 中文,一般指非 ASCII 码的字符,包括 Emoji。
  2. 系统,一般指 Microsoft Windows 系统,因为 Linux(NOI Linux 2.0/Ubuntu) 等不太可能发生这类问题。

1. 中文路径不 zc

这是主要针对 Windows+VSCode 用户的,因为 Windows 系统默认使用 UTF-16 编码,而传统 MinGW 工具链依赖 ANSI(如 GBK)或未完全适配 UTF-8 路径传递。
一般的,如果你使用的是 g++.exe,且路径包含中文,按照说法:你需要把文件夹全部改成英文。
But,由于 UTF-8 在系统上广为使用,于是有了这一个选项

然后,点击“更改区域设置”,就会弹出下面的窗口:把 Beta... 勾选上(不算测试版,因为测了快有 20{20} 年了。(Windows 7 上好像有,不知道记没记错))
你勾选后,就可以使用中文字符命名路径了。
该功能存在一些缺陷
请注意,这个功能不能保证你使用 Emoji 或其他符号转换正确。如果出现了一些乱码程序并且确信自己没有下载过,请重置电脑。
还有,开启了这个选项后,例如 Cat(i)OS(忘名字了)就会运行不正常,输出乱码。(这个只能怪开发者,因为他们没有开发一个合理的 UTF-8版本)

2. 控制台中文乱码

(同上,主要针对 Windows 用户)
在命令行输入这一段:
BASH
chcp 65001
应该就没有问题了。
功能同样存在部分缺陷
请注意,该功能仅临时使用。请在 profile.ps1(PowerShell 配置文件)添加 chcp 65001

3. dll 文件丢失

一般的,丢失的是下类三种文件:
  1. libgcc_s_seh-1.dll 文件,原因:使用了 SEH 异常(不大有人了解吧)处理的程序但未静态链接 修复:编译时添加这行代码:-static-libgcc -static-libstdc++
  2. libstdc++-6.dll 文件,原因:运行时依赖,只能重下。
  3. libgcc_s_dw2-1.dll 文件,使用 DW2 异常(也没什么人了解吧,大概都不怎么用)处理的旧版 MinGW。

你应当这样做
如果你丢失了这些文件,都应当重新下载 MinGW 的编译器。如果出现电脑故障或出现未知程序甚至dll 文件缺失后无法修复,你应当重置电脑!
请不要这样做
(我曾因为这个重置了电脑 7{7} 次)当然,你可以前往这个(广告巨多)网站下载:DLL 缺失(广告不缺)。请不要从某些“系统之家”“电信下载”之类的网站下载。
各种方法的风险评级原因
重新下载 MinGW 的编译器0没有原因,够安全
包管理器(没用过,但是够安全)0没有原因,够安全
从同版本编译器复制一份 dll 过来1-2可能出现的系统版本不兼容或部分系统组件不兼容。
从不明网站下载3-5又没告诉你哪一个版本,你怎么知道和你的编译器兼不兼容?非常不推荐!

4. 结语

G++ 编译器的使用是一个很值得研究的方面,用好了造福 我们自己,用差了给自己挖坑(?)。谢谢您的阅读!
广告位:一篇文两篇文

评论

0 条评论,欢迎与作者交流。

正在加载评论...