在MingW下编译中文资源文件的解决办法

本文介绍了解决使用mingw编译器在Windows环境下遇到的问题,即使用wine的wrc工具来编译含有中文资源的.rc文件,并在Makefile中相应修改以实现OpenVPNGUI汉化。
原文链接: http://blog.youkuaiyun.com/afile/article/details/1667866
最近下了OpenVPN GUI (WIN32)的源码回来阅读,本想试着汉化一下,找到了资源文件并把里面的字符串改成了中文,结果发现编译正常通过,运行时被汉化的窗口无法显示了。
后来在网上看到不少人提到mingw的资源文件编译器windres.exe在编译中文内容的资源文件时会出问题,说可以用wine的wrc工 具来解决,可是刚好又访问不了winehq.org,只好用电驴在瞎拉了一个wrc.exe回来,一看是WATCOM的,也许就是它吧。
试了一通后终于可以用wrc.exe编译工程里的.rc资源文件了,我用的语法是:
wrc -r -zm openvpn-gui-cn.rc -ic:/mingw/include
这是在win32的cmd下试的。
结果试着用编译出来的res文件链接生成执行程序的时候还是失败了,被告知文件格式不可识别。
于是再次使用windres把生成的res文件改成coff格式的res文件。
windres -i openvpn-gui-cn.res -o a.res -O coff
mv a.res openvpn-gui-cn.res
终于链接出汉化后成功运行的执行程序了。
最后就去改Makefile了,大约的修改如下:
...
WRC = wrc
#设定WRC变量为wrc,这里我已经把wrc.exe复制到到c:/mingw/bin下了
...
RES = temp-gui-$(RES_LANG).res
...
temp-gui-$(RES_LANG).res: openvpn-gui-$(RES_LANG).rc openvpn-gui-res.h
$(WRC) -r -zm openvpn-gui-$(RES_LANG).rc -i/c/mingw/include -fo=temp-gui-$(RES_LANG).res
#由于在msys下进行编译,include目录在/c/mingw/include下,这里生成的是中间的res文件
...
openvpn-gui-$(RES_LANG).res : temp-gui-$(RES_LANG).res
$(WINDRES) -i temp-gui-$(RES_LANG).res -o openvpn-gui-$(RES_LANG).res -O coff
#这里就只进行格式变换了
最后提到一点的是,wrc不认识原来的rc文件里字符串折行写的格式如:
ERR_CONFIG_ALREADY_EXIST "There already exist a config file named '%s'. You cannot " /
"have multiple config files with the same name, even if " /
"they reside in diffrent folders."
要能让wrc编译过去,得把字符串接成一整行:
ERR_CONFIG_ALREADY_EXIST "There already exist a config file named '%s'. You cannot have multiple config files with the same name, even if they reside in diffrent folders."
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值