2015年7月1日水曜日

Windows:VSTにpng使いたい!

GUI作り、壁にぶつかってはちょっとだけ進み、を繰り返しております。

そろそろレイアウトもいい感じになってきたので、透過PNGが使いたい所。
神様の作ったサンプルは全部BMPなので、ファイルサイズも無駄にでかいし、
いい機会だし取り組みました。

神様もさらりと書いております。pngが使いたかったら、zlibをビルドして、
libpngをビルドして、USE_LIBPNGを入れてこうするといけるよ!みたいな。

さらりと書くよねー。さらりと書いてあるから簡単にいくかなと思ったら全然
うまくいかなかった。ハマった。

神様の言うとおりにしてたらダメだったので、自分でやったことをメモる!

■ソースはwebから落としてきてビルドしたらダメ

zlibやlibpngの専用サイトから落としてきてビルドしたらダメだった。じゃあ
どうするかっていうと、VSTSDKの中の、vstguiの隣にあるzlibフォルダと
libpngフォルダの中にあるソースを使うのです。(正確にはvstgui.sfの中ね)

これらを使ってスタティックライブラリとしてビルドする。ビルドはいつも
ウォーニングでまくるけどあっけなく通る。zlib.libとlibpng.libができあがる。

zlib.hとzconf.h、png.hとpngconf.hをコピーして自分のトコにもってきて、
ビルドする。エラーでまくり。良く読むとlibの追加の方法が良くわかって
なかった。

■ライブラリの扱いは適当ではダメ

・libのパスを通す
(構成プロパティ→VC++ディレクトリ→ライブラリティレクトリ)
・libそのものを明示的に追加する
(構成プロパティ→リンカー→追加の依存ライブラリ)

これが必要なのね!ここハマった。みんなわかってるから簡単に書いて
るんだもの。そして、ビルドしたらまたエラー。なんだかライブラリ内の
関数がカブってるみたいな。そこで、

・無視するライブラリを追加
(構成プロパティ→リンカー→特定の規定のライブラリの無視)

ここにMSVCRT.lib(Release)とMSVCRTD.lib(debug)を入れたらビルド通る。

※これ以外にもマルチスレッド指定とかやったけど関係あるのかしら・・

このやり方が合ってるのかどうかわかんないけど、とにかくビルドが通って
無事PNGを使う事ができた。背景画像が800kbから6kbになって感激!

0 件のコメント:

コメントを投稿