[程式] DxLib 在中文開發環境下的設定

看板GameDesign (遊戲設計)作者 (ウィンディ@イージス)時間8年前 (2016/11/16 23:58), 8年前編輯推噓5(5010)
留言15則, 5人參與, 最新討論串1/1
今天有多研究一下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://www.ptt.cc/bbs/GameDesign/M.1479311895.A.CA3.html ※ 編輯: shadowth (218.161.49.111), 11/16/2016 23:59:07

11/17 00:35, , 1F
原 po 不研究一下 MS 是怎麼建議你搞 i18n 的?
11/17 00:35, 1F

11/17 00:37, , 2F
一般來說現在不會直接在程式裡寫死字串常數
11/17 00:37, 2F

11/17 00:41, , 3F
GNU 有 gettext,Android 寫 strings.xml,Qt 用 .qm
11/17 00:41, 3F

11/17 01:02, , 4F
我也是覺得這不是個很智慧的方法 但我也沒能力去改到
11/17 01:02, 4F

11/17 01:03, , 5F
更底層的東西 所以我會先這樣子做...
11/17 01:03, 5F

11/18 02:39, , 6F
啊 第一次看到有人討論DxLib 其實還蠻好當作入門的說QQ
11/18 02:39, 6F

11/18 02:39, , 7F
可是中文的資料量實在是...orz
11/18 02:39, 7F

11/18 14:55, , 8F
DxLib畢竟是日本出來的 討論都集中在日本的同人教學站
11/18 14:55, 8F

11/18 14:56, , 9F
然後他的function講好聽點是方便 講難聽點是摸不到底層
11/18 14:56, 9F

11/19 12:45, , 10F
_T()這樣的寫法好古老,我現在都統一用UTF-8了
11/19 12:45, 10F

11/19 12:47, , 11F
第三方程式想吃寬字元我會轉給它,_T或L這些都不寫了
11/19 12:47, 11F

11/19 14:00, , 12F
rabi-ribi 就是用dxlib 弄的
11/19 14:00, 12F

11/19 14:56, , 13F
突然發現我錯認為單純的 DX,跟第三方的 dxlib 搞錯了
11/19 14:56, 13F

11/19 14:57, , 14F
是說日本寫的程式似乎都不考慮 i18n,之前弄 PspNetParty
11/19 14:57, 14F

11/19 14:58, , 15F
的 zh_TW 翻譯也是直接改字串 orz
11/19 14:58, 15F
文章代碼(AID): #1OB88NoZ (GameDesign)
文章代碼(AID): #1OB88NoZ (GameDesign)