gdi++

なんか最近更新されず、Heがソース未公開のため、膠着状態になっている。
「0787からまたやり直せばいいんだけど……」てな感じでいつも言われる割にはずっと放置されてるのがなんか不憫だったので、ちょっとソースでも読んでみるかーと思った。しかしWindowsアプリはまったく未経験。ソース読む段階まで行けるかどうかも怪しいもんだ。
とりあえず、Visual C++ 2008 Express EditionとPlatform SDKを入れて、ビルドしてみる。
freetype.dllはなんとなくできたっぽい。しかしlibが出てこない。lib作るモードだとdll出てこないし。dll作る場合って、本体のdllと、それを利用するためのlibがセットでできるもんだと思ってたけど……違うんだろうか。
しかしfreetypeのtarballから*.defなファイルを探しても見つからない。builds/exports.mkなるMakefile断片は見つかったのだが、どう使うんだろうか。どのファイルからも読まれてないっぽいんだけど。
やっぱりfreetype.vcproj開いてビルドすればおkみたいなノリは甘かったのだろうか。
んで、gdi++の方のビルドも平行して挑戦。とりあえず、freetype.libがないぞ、と言われるところまでは辿り着いた*1freetypeを、dllでなくlibを生成した状態にしてgdi++ビルドすると、今度はリンカがシンボル未解決エラーを吐く。libって静的リンク用のものだからシンボル全部含まれるような気がするんだけどなぁ。dll用のオプションになってるからかな?
まだ謎が多い。とりあえずビルドが通らないと話にならない。ビルドができたら、ちゃんと動くか確認して、それでようやくソース追う段階に……。先は長い。

追記

freetypeに関してはCVSからソースを取得してビルドまで行なうバッチファイルが過去に作られた(gdi0411)のだが、当時のfreetypeのバージョンは2.2.1(CVSは2.2.2に向けたもの)であり、現在の2.3.5から見ると結構変わっている可能性があるかなーと。そのバッチファイルはソース自体にパッチを当てたりしていたので、少なくともそのまま使うことはできなさそうな。ちゃんとソース読めばできるかもしれないけど。
それを使うにせよ使わないにせよ、やっぱりfreetype側のソース改変も必要かなぁ……

*1:上の記事のワザを使ってATL使用を回避しているが、CSimpleMapとかってATLのクラスみたいなんだけど大丈夫なのか……