|
其实是这样的,这事说起来比较复杂,本质上还是设计约束下的被迫之举
zig设计里panic报告错误的时候只能携带一个utf-8的字符串,很多内置的机制都依赖于此(为了跨平台,用单一字符串编码是一种trade off)
然后我重写了崩溃报告方式(默认是打印到终端,然而窗口程序并没有终端),用A系列MessageBox就可以省下一个utf-16转换的代码了(大约0.5KB)
接着为了缩减导入表,就不再为了打印帮助信息而导入MessageBoxW函数(节约一个导入表)
你可以暴力修改字符串达成汉化,但是在我这肯定是乱码的,因为我开了系统级的utf-8支持,然后通常大家用的都是GB2312编码的中文字符串。(没错,一堆国产软件都是坏的,不过可以通过LocalEmulator解决)
反过来,我在源码里直接写中文的话,我这里是能正常显示,但是大多数人那边肯定也是乱码的。
因此,在软件核心功能部分,也就是调用系统ShellExecuteEx的部分,用的是 W 系列的函数,这是符合微软推荐的方式,应该不会产生任何问题(
还能做一点小小的优化,把程序参数直接原样传递给目标程序 |
|