gcc, windresで日本語を扱う方法
MinGWに含まれるコンパイラであるgcc.exe、そしてリソースコンパイラであるwindres.exeは日本語を扱う場合に一手間必要だ。そのメモ。
gccは内部の文字表現はUTF-8で行っている。そのためShift_JISのソースコードを読ませると、コンパイルエラーとなるか、警告が表示される。これはソースコードをUTF-8にすることで回避可能だ。しかしそれをクリアしても、実行時にUTF-8で出力を行えば、結局文字化けして表示されることになる。これを解決するオプションがあるらしい。
gcc.exe(g++.exeなども)の3.4.0以降では以下の指定でShift_JISのソースファイルを読み、実行時にShift_JISで出力できるとのこと。
--input-charset=cp932 --exec-charset=cp932
input-charsetは入力ファイル(ソースファイル)の文字コードを指定し、exec-charsetは完成したバイナリの実行時に外部とのやり取りに使用する文字コードである模様。
windres.exeの2.16.91以降では以下の指定で日本語(おそらくShift_JIS)を取り込めるとのこと。
--language=0411
この0411というマジックナンバーはWindows系プログラミングで時々出てくる。日本語リソースの番号と認識しているのだが自分があまり必要ないのできっちり確認していない…。上記のcp932はコードページ932で、いわゆるShift_JISのマイクロソフト的実装を指しているのは承知しているのだが…。
た・だ・し…
筆者が試した限りでは、MinGWのサイトで配布されているバイナリではこれらのオプションを使用できなかった。理由は、gcc自身のビルド時にiconvのサポートが有効にされていないことにあるらしい。わざわざそのためにビルドしなおすのも億劫なので、結局使用していない。
ちなみに、実装方法はあまり好ましくないらしいが、MinGW日本語化プロジェクトのものなら、当然Shift_JISが通る。が、こちらは長らく更新されておらず、gccのバージョンが古い…。
最終更新時間:2008年10月24日 05時31分58秒