ImageMagickを使ったソフトをStaticLinkでビルドしようとして失敗した
4時間近くずっと悩んでたんだけど結局わからず。windows and visual c++ and Magick++の話です
まずImageMagickは/MTオプションをつけてビルドに成功。ついでに付属のconvertコマンドもそのライブラリを静的リンクしてビルドしてみたところ、無事うまくいき、5MBくらいの巨大なファイルが生成された。普通に実行したら特にエラーもなく実行できたし、そのへんの画像ファイルを変換してみたところ、特に問題なくうまくいっていた。つまりStaticライブラリの生成自体はうまくいったということだ。
次にそれを使う俺のコード側。それを使ってコンパイルしたらコンパイル自体はうまくいった。だけど実行時にMagick::Image::resizeのなかでfree関数の実行に失敗してなんかの例外が発生して強制的にデバッガー起動みたいな感じになってた。
予想だけど、ImageMagickはマルチバイトでビルドされてて、俺のコードはUnicodeでビルドされてるために文字のバイト数が不整合になっててそれでよくわからんメモリの位置に文字をはみ出して書き込んじゃってデータぶっ壊れてsegmentation faultみたいな感じになったんじゃないかと予想。
とりあえず明日は仕事もあるしこのへんで諦めた。