おいふぉりーのぶろぐ

きっと趣味のブログに違いないです!!

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

VIGRA の JPEG ファイルのインポート/エクスポートがうまくいかないと思ったら・・・

前にも VIGRA について記事を書いたんですが、なんだか JPEG ファイルのインポートエクスポートがメモリアクセス違反で失敗しておかしいなあとずっと思っていたんですが、原因が分かりました。今までは、まあいいかと JPEG ファイルを使わないようにして放置していたんですが。

原因は、インポート/エクスポートを行う impex というモジュールをビルドしたときに、 gtkmm に含まれる libjpeg をリンクしたことが問題だったようです。なぜそれがダメなのかは良くわからないのですが・・・ gtkmm の libjpeg のヘッダーと LIB と DLL が本当に同一バージョンのものなのか疑ってみたり・・・
(ちなみに gtkmm を使った自分のプロジェクトをコンパイルすとき libjpeg は直接自分のプロジェクトからリンクしません。gtkmm の内部で使っている?ようです・・・どこで使ってるのかは DLL の依存関係をちょっと見ただけじゃ分からなかったです。 GDK で JPEG のロード/セーブをサポートしているのでそれかと思ったのですが、 GDK の DLL は libjpeg の DLL に依存してなかったし。)

結局、自前でコンパイルした libjpeg をリンクしたらうまくいきました。

最近は、 VIGRA のページでバイナリを配布しているのでそれを使えば問題ないはずです。


P.S.
libjpeg の使い方を見てて分かったのですが、gtkmm に含まれる libjpeg をリンクしたことによる問題が何か分かりました(と思う)。libjpeg では入出力関連の部分で C 言語のファイルポインタを渡すようになっています。おそらく、 gtkmm に含まれるものは私が今使っているコンパイラ MSVC2005 ではないので、 C 言語のランタイムも違うはずです。 ファイル構造体は規格で定まっているいるわけでなく実装依存です。ということは、 vigra で生成されたファイル構造体ランタイム A バージョンを libjpeg に関数の引数として渡して、libjpeg 内ではそれをファイル構造体ランタイム B バージョンとして解釈することになるので、どんな挙動になるのかは・・・想像したくないですね。
  1. 2008/03/24(月) 07:47:24|
  2. ソフトウェア開発
  3. | トラックバック:0
  4. | コメント:0
<<libjpeg の入出力について | ホーム | 3D メガネについて>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://tm86eublog.blog42.fc2.com/tb.php/216-24cc5d02
この記事にトラックバックする(FC2ブログユーザー)

来客数

プロフィール

Euphorie

Author:Euphorie
"おいふぉりー"って呼んでくださいな☆
ハードウェアとかソフトウェアとかの開発に興味があったり。。。
連絡先は上の画像。

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。