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

来源:互联网 发布:mysql事务的原理 编辑:程序博客网 时间:2024/05/17 08:13
最近下了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."
 
原创粉丝点击