ページ 11

BCC Developerでlibjpegを使用

Posted: 2011年12月13日(火) 17:15
by HIRO
BCC Developerにてlibjpegをコンソールアプリケーションで使おうとしています
調べながら以下のような手順で進めたのですが、力尽きてしまいました

libjpegのzipをダウンロードしてきて解凍(jpeg-8cを確認)
コマンドプロンプトからライブラリをnmakeでビルド
(ビルドに必要なvsvars32.batとWin32.makはインストールしてあったMicrosoft Visual Studio 9.0に入っていたものを使用)
libjpeg.lib jpeglib.h jerror.h jconfig.h jmorecfg.hをBCCDで作っておいたプロジェクトにコピー
プロジェクト設定→リンクでlibjpeg.libをライブラリファイルに指定
#include"jpeglib.h"といった形で
それ以外のヘッダファイルをプロジェクトに追加
メイクしてみるとエラー

Error: 'C:\~\LIBJPEG.LIB' contains invalid OMF record, type 0x21 (possibly COFF)

調べてみるとVC向けの.libはBCCで使えないということなので、BCCに入っていたcoff2omf.exeでBCC向けに変換
変換した.libを入れてライブラリファイルに指定
メイクしてみると別のエラー

Error: 外部シンボル '_jpeg_std_error' が未解決(C:\~\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_jpeg_CreateDecompress' が未解決(C:\~\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_jpeg_stdio_src' が未解決(C:\~\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_jpeg_read_header' が未解決(C:\~\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_jpeg_start_decompress' が未解決(C:\~\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_jpeg_read_scanlines' が未解決(C:\~\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_jpeg_finish_decompress' が未解決(C:\~\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_jpeg_destroy_decompress' が未解決(C:\~\DEBUG\MAIN.OBJ が参照)

すべてlibjpegの関数なので変換したライブラリに問題があるということだと思います
プログラムは(ttp://www.syuhitu.org/other/jpeg/jpeg.html)様のjpeg_prog03.cをmain.cにコピーして使わせていただいているので問題ないはずです

気になるのは変換前に266,636バイトあったライブラリが、変換後は512バイトと凄まじく小さくなっている点です
ここからどのようにアプローチして問題を解決していけばいいのか、わからなくなっています
知恵を貸していただけると助かります

Re: BCC Developerでlibjpegを使用

Posted: 2011年12月14日(水) 07:25
by beatle
http://oshiete.goo.ne.jp/qa/2991859.html
が参考になりそうです。

Re: BCC Developerでlibjpegを使用

Posted: 2011年12月14日(水) 07:30
by beatle
HIRO さんが書きました:気になるのは変換前に266,636バイトあったライブラリが、変換後は512バイトと凄まじく小さくなっている点です
この文を見逃していました。
これは明らかに変換後のライブラリはダメなライブラリになっています。変換がミスっていると思うのですが、真相は分かりません。
http://book.mycom.co.jp/support/bookmook/opencv/ さんが書きました: Borland C++ Compilerのツール「coff2omf」で「C:\Program Files\OpenCV\lib」のlibファイルをすべてBorland 用のlibファイルに変換します。上書きはできないので別なフォルダに生成してから置き換える必要があります
とありますが、もしかして
coff2omf C:\~\LIBJPEG.LIB C:\~\LIBJPEG.LIB
などとやっていませんか?

Re: BCC Developerでlibjpegを使用

Posted: 2011年12月14日(水) 13:23
by ARCS
coff2omfはDLLをリンクするためのインポートライブラリを変換するもので、スタティックライブラリには対応していません。
ですので、なんとかしてBCCでスタティックライブラリを作成するか、DLLを利用するかのどっちかじゃないでしょうか。