MinGW+HtmlHelp

幾つかの理由で、C/C++ のコンパイラには、

gcc.exe (GCC) 3.4.5 (mingw-vista special r3) Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

を使っている。(→MinGW) フリーで自由に使えるので、あまり文句は言えないが、幾つか困った事が出てくるので、自分の備忘録として書いておく

  • 日本語の扱いに難がある 最悪、Shift_JIS なら
    gcc finput-charset=CP932 fexec-charset=CP932 hoge.c
    とし、UTF-8 ならば
    gcc fexec-charset=CP932 hoge.c
    で上手くいくはずが、現在のこのバージョンでは、この方法も上手くいかない、ネットの情報を見ると問題なかったヴァージョンも存在するということで、一旦、R1 にすると出来たので、どうやらレベル・ダウン・バグの様。
    ただし、これについては、殆ど _T() マクロを使ってやれば問題なし。
    最大の問題は、ダイアログ・ボックスにおける日本語。普通にやると文字化けを起こす。そこで、『MinGWによる日本語Windows Programming』で提供されている方法で、リソース・コンパイラ windres に渡す前の段階でフィルタをかけてやるうまくいく。提供して下さっている藤井さん有難う。(まあ、ここで書いても意味は無いけど)
  • HTML ヘルプの呼び出しが面倒
    MinGW では HTML ヘルプを呼び出す HTML Help API HtmlHelp() 関数が用意されていないよう。
    仕方が無いので、『HTML Help Workshop』に含まれているヘッダ・ファイルとライブラリを使うしかないのだが、これが一筋縄ではいかない。INCLUDE や LIB に追加しなければいけないのは当然だが、それだけでは上手くいかない。リンクが上手くいかないのだ。
    結果、ファイルを直接指定しないとダメのよう。要するに、Makefile に
    INCS = -I /c/Program\ Files/HTML\ Help\ Workshop/include LIBS = -L /c/Program\ Files/HTML\ Help\ Workshop/lib -lhtmlhelp
    といった記述が必要。