[程式] 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