Aurex2 の Windows用バイナリを毎日更新するために、Linux に binutils, gcc, mingw-runtime, w32api を入れる。
gcc は 3.4.0 を使用。g++ を使用するのでプリコンパイルヘッダ使おうかと思ったが、別にそれ程大きくないからいいかと思って放置。
binutils に含まれる windres を、MinGW日本版プロジェクト のソースと置き換えてコンパイルする。しかし、リソースがうまく表示されない。調べると、以下のことが分かった。

  • 正しいリソースは UCS-2(UTF-16?)LE で格納されてなければならない
  • MinGW日本版プロジェクト の修正では、iconv を使用し(SHIFT_JIS→)EUC→UCS-2(LEは付いてない)にしている
  • しかし、コンパイルされたリソースは UCS-2BE で作成される
  • “UCS-2” を “UTF-16LE” とエンディアンを指定すると BE で作成される。

……。iconv で “UCS-2” を “UTF-16BE” に変更すると直った(UTF-16LEで作成される)のでとりあえずこれで行くが、気持ちわるい。
glibc の iconv にバグがありそうだけど……。どうなんだろ。

コメントを残す

メールアドレスが公開されることはありません。