GDI++用のfreetype.dllをコンパイルする手順

何となくそういうことをやりたい気分になったのでよくわからないままに挑戦してみた。コンパイラとか持ってないので、全て拾いモノで。

FreeTypeのソースを取ってくる

から「freetype-2.3.11.tar.gz」みたいなものを拾ってきて適当に解凍。

MinGWのインストール

ここからダウンロードナウできるパッケージを実行してインストールする。

  • インストール場所はまあどこでも(パスにスペース入ってない方が良いのかも)
  • インストールするものを選ぶ画面で「make」なんとかがあるので、チェックしておく

MSYSのインストール

  • MinGW - Minimalist GNU for Windowsの山のようにあるファイルの中から「MSYS Base System -> msys-1.0.11 -> MSYS-1.0.11.exe」みたいなファイルを探す

インストールパッケージなので実行してインストールする。

  • インストール場所はまあどこでも(パスにスペース入ってない方が良いのかも)
  • 途中で「MinGWと連携みたいなことするけどどうする?悪いようにはせえへんよ本気(マジ)で」みたいなことを聞かれるので、よきに計らってもらう。このとき、MinGWのインストールパスを聞かれる

FreeTypeコンパイルしてDLLを作る

このやり方は素晴らしい。なんと云っても、何も分かっていないわたくしにも出来たのだから。具体的には、

  1. MSYSを起動する。MSYSをインストールしたフォルダにあるmsys.batを実行
  2. FreeTypeを展開したフォルダまで移動する。ちょっと癖があって、「C:\local\work\freetype-2.3.11」だったら「/c/local/work/freetype-2.3.11」になる
  3. 上のリンク先の手順に従う。そのまま作ると完成ファイルがでかくなるので、オプションをちょっと追加した(もっと小さくできるのかもしれないが、よくわからない)。具体的には、以下のコマンドを一行ずつ実行する。
./configure CFLAGS='-O3 -DNDEBUG' LDFLAGS='-no-undefined'
make
make install
  • 任務完了!

DLLはどこにあるか

MSYSのインストールパス以下、/loca/bin/に「libfreetype-6.dll」と云うのが出来ているので、「freetype.dll」にリネームしてgdi++のフォルダにつっこむ。freetypeの解凍パス以下の/objs/.libs/にあるモノでもいいですたぶん。

おまけ

freetype解凍パスの/include/freetype/config/ftoption.hと云うのがコンパイル時に参照されます。ここのコメントを適当に修正してコンパイルすると、ありえないことが、起こる‥‥。