SWFEditor Windows DLL
出来ました。バージョンは 0.47a (0.47 の開発途中)で、実際は 0.46 相当です。
Vista 上で、かつ 5.3.6しか動作確認していないので、もし他の環境で動いたという報告があると嬉しいです。
↑これを php module 置き場において dl('php_swfed.dll'); なり php.ini に追加設定するなりして下さい。置き場所間違えたら、多分エラーが正しい場所を教えてくれます。
一般的に使われそうな php.exe に組み込んでも動かなかったので、dll と一緒に build した php.ext 等と併せて zip にまとめました。
- 追記 (2011/8/18)
- Visual C++ 2010 を入れてない環境では動かないらしいので。↓こちらで。(opengl 用のパッケージですが、こっそり swfed も動くようにしてます)
- http://diary.awm.jp/~yoya/data/2011/08/17/php53opengl-0.0.1.zip
Windows 版 PHP の build 方法
本家の Wiki の手順で進めれば大体はうまくいきます。
- Visual C++ (今回は 2010) をインストール
- Windows SDK をインストール
- c:\php-sdk を作成して、binary-tools.zip (今回は php-sdk-binary-tools-20110512.zip) を C:\php-sdk に展開
- Windows SDK コンソールを起動。(黒字に黄字の画面)
cd C:\php-sdk # ショートカットをコピーして work dir を C:\php-sdk にしとくと楽 setenv /x86 /xp /release # 黒字に暗い緑字に画面に変わる。読みにくい bin\phpsdk_setvars.bat bin\phpsdk_buildtree.bat php53dev
-
- 。(ちなみに、setenv と phpsdk_setvars.bat はコンソールを起動する際に、毎回実行する)
- C:\php-sdk\php53dev\vc9\x86 にソースとライブラリを展開
- php ソースツリーにトップに移動して build 関連コマンドを実行
cd C:\php-sdk\php53dev\vc9\x86\php-5.3.6 buildconf # ソースツリーを漁って configure.js を構築する configure # configure.js を実行してコンパイル条件を整える nmake # 実際のコンパイル&リンク
あと、手順に加えて以下の2つの対処が必要でした。
- ext/calender/jewish.c からヘブライ語を除く。
- ext/gd/config.w32 を編集して SHARED 対応する。(ext/zlib/config.w32 を真似)
Windows 版 PHP extension DLL の build 方法
- ext/swfed にプログラムを置く
- 必要なライブラリをばら撒く
- png はヘッダを deps/include 以下に置く
- giflib のライブラリとヘッダ
- 入手元 GifLib for Windows
- ヘッダは deps/include に置くだけ。
ライブラリは giflib.a.dll を giflib_a_dll.lib に改名して deps/lib に設置- ↑これは間違いだったので修正記事 > SWFEditor for Win32 で GIF が扱えない不具合 - yoyaのメモ
- giflib.def を ext/swfed 以下に置く。(でないと動作時に giflib-4.dll が必要になる)
- ext/swfed/config.w32 を作成する (zlib や gd の config.w32 を真似する)
- buildconf を実行
- configure --enable-swfed=shared を実行
- nmake
- Release_TS 以下に php_swfed.dll が出来てます。
試行錯誤
- コメントに日本語があるとマズイので全て英語にするか消す。 grep "[あ-ん]" *.[ch] で探した
- 変数宣言はブロックの頭に置く必要があるので、そうする。
- giflib は sourceforge のを利用したけど、static library が 〜.a で提供されていて、〜.lib に拡張子を変えたら認識してくれた。(認識されない場合でも build は通る、けど別途 giflib4.dll が必要になる)
- config.w32 を編集して buildconf しても configure.js に反映されない事がある。nmake clean してやり直すとうまくいく。(謎)