[程式] DxLib 在中文开发环境下的设定

楼主: shadowth (ウィンディ@イージス)   2016-11-16 23:58:12
今天有多研究一下DxLib如何在中文环境下作业。
还好有一定成果,趁现在把步骤写一写。
DxLib一直有一个问题,就是在非日文原生环境下,VS有char和TCHAR转换的issue,
还有header不是unicode编码编成。
如果不使用日文原生环境(OS+IDE都要是原生日文接口)和使用多字节字符集编译的话,
会发生照范例写但compile不过去的事情,以及查询DxLib所属function上的困难。
之前一直都架设独立环境去build,
现在找到解法后,对于我这个没什么程式语言概念的人最少会有一点帮助。
最少不用花时间去建构日文环境。
以下内容会顾虑到初接触DxLib的程式语言新手,所以步骤会从头开始写。
=======================================================
使用IDE: Visual Studio 2015 community(记得要安装VC++套件)
OS: Windows 7 SP1以上(VS安装必备条件)
1. 先到DxLib官网下载套件。
http://dxlib.o.oo7.jp/dxdload.html
里面选择VC++用,然后找地方执行解压缩。
2. (建议执行,对于在IDE中查function会比较方便)
找工具将解压缩后得到的所有header和文字档全部转成UTF-8编码。
我个人是使用ConvertZ,因为他可以做批次转换。
3. 开启VS,开启“Win32空专案”或自己再建立一个。
4. 在project有cpp档的状态下,
对方案总管的project档按鼠标右键选择“属性设定”。
5. 在属性设定内,将组态切到“所有组态”,平台切到“所有平台”,
然后照以下指示进行设定。
一般 → 字符集 :
“使用Unicode字符集”
C/C++ → 一般 → 其他include目录 :
找到刚刚解压缩DxLib的位置,
点进去找到“プロジェクトに追加すべきファイル_VC用”这个资料夹。
这个是需要include的目录。
p.s.通常我会手动将资料夹名改成英文。
连结器 → 一般 → 其他程式库目录 :
跟上头步骤的include目录一样。
C/C++ → 进阶 → 停用特定警告 :
新增4819 (未以Unicode格式储存程式码)
这个在纯日文环境下不会发生,但在中文环境下我会建议停掉他。
以上步骤做完先进行套用。
6. 将组态切到“Release”,到C/C++ → 程式码产生,
把执行阶段程式库改为“多执行绪(/MT)”,然后套用。
7. 将组态切到“Debug”,
把执行阶段程式库改为“多执行绪侦错(/MTd)”,然后套用。
以上,前置作业大功告成。
然后要注意原本程式码内,函数需要输入文字的地方,
例如文字输出系的printfDX还有DrawFormatString系列,
以及LoadGraph等要求档案位置的函数中,需要使用_T()将文字编码进行转换。
ex. DrawFormatString(100, 100, GetColor(255,255,255), "test");
→DrawFormatString(100, 100, GetColor(255,255,255), _T("test"));
以上资讯分享给大家!!
作者: Bencrie   2016-11-17 00:35:00
原 po 不研究一下 MS 是怎么建议你搞 i18n 的?一般来说现在不会直接在程式里写死字串常数GNU 有 gettext,Android 写 strings.xml,Qt 用 .qm
楼主: shadowth (ウィンディ@イージス)   2016-11-17 01:02:00
我也是觉得这不是个很智慧的方法 但我也没能力去改到更底层的东西 所以我会先这样子做...
作者: tv1239 (路过的)   2016-11-18 02:39:00
啊 第一次看到有人讨论DxLib 其实还蛮好当作入门的说QQ可是中文的资料量实在是...orz
楼主: shadowth (ウィンディ@イージス)   2016-11-18 14:55:00
DxLib毕竟是日本出来的 讨论都集中在日本的同人教学站然后他的function讲好听点是方便 讲难听点是摸不到底层
作者: eye5002003 (下一夜)   2016-11-19 12:45:00
_T()这样的写法好古老,我现在都统一用UTF-8了第三方程式想吃宽字符我会转给它,_T或L这些都不写了
作者: johnny94 (32767)   2016-11-19 14:00:00
rabi-ribi 就是用dxlib 弄的
作者: Bencrie   2016-11-19 14:56:00
突然发现我错认为单纯的 DX,跟第三方的 dxlib 搞错了是说日本写的程式似乎都不考虑 i18n,之前弄 PspNetParty的 zh_TW 翻译也是直接改字串 orz

Links booklink

Contact Us: admin [ a t ] ucptt.com