作者shadowth (ウィンディ@イージス)
看板GameDesign
标题[程式] DxLib 在中文开发环境下的设定
时间Wed Nov 16 23:58:12 2016
今天有多研究一下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"));
以上资讯分享给大家!!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 218.161.49.111
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/GameDesign/M.1479311895.A.CA3.html
※ 编辑: shadowth (218.161.49.111), 11/16/2016 23:59:07
1F:推 Bencrie: 原 po 不研究一下 MS 是怎麽建议你搞 i18n 的? 11/17 00:35
2F:→ Bencrie: 一般来说现在不会直接在程式里写死字串常数 11/17 00:37
3F:→ Bencrie: GNU 有 gettext,Android 写 strings.xml,Qt 用 .qm 11/17 00:41
4F:→ shadowth: 我也是觉得这不是个很智慧的方法 但我也没能力去改到 11/17 01:02
5F:→ shadowth: 更底层的东西 所以我会先这样子做... 11/17 01:03
6F:推 tv1239: 啊 第一次看到有人讨论DxLib 其实还蛮好当作入门的说QQ 11/18 02:39
7F:→ tv1239: 可是中文的资料量实在是...orz 11/18 02:39
8F:→ shadowth: DxLib毕竟是日本出来的 讨论都集中在日本的同人教学站 11/18 14:55
9F:→ shadowth: 然後他的function讲好听点是方便 讲难听点是摸不到底层 11/18 14:56
10F:推 eye5002003: _T()这样的写法好古老,我现在都统一用UTF-8了 11/19 12:45
11F:→ eye5002003: 第三方程式想吃宽字元我会转给它,_T或L这些都不写了 11/19 12:47
12F:推 johnny94: rabi-ribi 就是用dxlib 弄的 11/19 14:00
13F:推 Bencrie: 突然发现我错认为单纯的 DX,跟第三方的 dxlib 搞错了 11/19 14:56
14F:→ Bencrie: 是说日本写的程式似乎都不考虑 i18n,之前弄 PspNetParty 11/19 14:57
15F:→ Bencrie: 的 zh_TW 翻译也是直接改字串 orz 11/19 14:58