>ヘッダーファイルもディレクトリの設定しなきゃダメですので。
すいません。
申し訳ないです。ここが良く分かりませんでした。
私はheader filesを右クリックしその中にjpeg-6bの全てのヘッダファイルを入れていま
す。それだけではいけないですか?
もしディレクトリの設定が必要であればどこを直せばいいですか?
ツール - オプション - ディレクトリ
です。
「表示するディレクトリ」コンボボックスがインクルードファイルの時に
表示されるパスの一覧のどれかに、jpeg関連のヘッダファイルがあればいいはず。
または、jpeg関連のヘッダファイルがあるパスを一覧に登録してもOK。
あと、このコンボボックスにはライブラリファイルと言うのがあります。
この時に表示されるディレクトリの一覧のどれかに、
libjpeg.libは置かれてますか?
逆にlibjpeg.libがあるパスを一覧に登録してもOK。
>この時に表示されるディレクトリの一覧のどれかに、
>ibjpeg.libは置かれてますか?
はい。Program Filesm⇒
Microsoft Visual Studio⇒ VC98⇒ Libのフォルダの中に設置しています。
>表示されるパスの一覧のどれかに、jpeg関連のヘッダファイルがあればいいはず。
>または、jpeg関連のヘッダファイルがあるパスを一覧に登録してもOK。
両者も試してみましたが変わりないです。
パス関係は問題ないってことですかねぇ。
ところでせんべえさんのプログラム、MFCですか?
それともSDKですか?
既にどれほど作りこまれてるのかわかりませんが、
一度、シンプルな最小プログラムにjpegライブラリを組み込めるか
試してみてはどうでしょう。
返信有難うございます。
>パス関係は問題ないってことですかねぇ。
皆様の助言を踏まえたうえ、現状ではそのようにかんがえます。
>ところでせんべえさんのプログラム、MFCですか?
>それともSDKですか?
私は下記のページを参考にしています。
http://www.asahi-net.or.jp/~yw3t-trns/opengl/samples/imgsavejpeg/index.htm
URLところからサンプルをダウンロードしてみました。
せんべえさんが遭遇したリンクエラーは出なかったのですが、
ビルドはうまくいきませんでした(LNK2005が発生)。
でも、ちょっと気づいたことが。
libjpeg.lib をビルドした時のコンパイルオプションなんですが、
「プロジェクトの設定」ダイアログのC/C++タブのカテゴリコンボボックスから
「コード生成」を選び、使用するランタイムライブラリ コンボボックスを見てくださ
い。
私の場合、libjpeg.libは「マルチスレッド(DLL)」になっていたのに対し、
imgsave(DLしたサンプル)は「シングルスレッド*」になってまして、
これを前者に統一したらビルドできるようになりました。
sugarさん
返信有難うございます。
どうしてでしょうか??
昨夜もずっと行っていましたが解決しないままです。とほほ。
>コード生成」を選び、使用するランタイムライブラリ コンボボックスを見てくださ
い。
確認しました。私のほうはシングルスレッドになっています。
imgsave(DLしたサンプル)を実行するまでの手順をお話しします。
1.jpeg-6bをダウンロードし、 http://tanack.hp.infoseek.co.jp/libjpeg.html
このページに書かれている手順に従いVC++でコンパイルし、libjpeg.libを作成。
2.作成したlibjpeg.libをimgsave(DLしたサンプル)のプロジェクトのなかにおき、
実行。
3.リンクの設定などは皆様のアドバイスに従い設定。
このような感じになっています。
なにか気がつくことがありましたらアドバイスをいただけませんか?
お手数おかけします。
> 私のほうはシングルスレッドになっています。
>
ライブラリもサンプルアプリケーションも、
一度マルチの方でビルドしなおしてみる価値はありませんかね?
一応、私の方ではマルチで動いている実績があるものですから…。
>一度マルチの方でビルドしなおしてみる価値はありませんかね?
行ってみましたが同じ結果です。
私の上記の手順は大丈夫ですか?
sugarさんと違うところはありましたか?
よろしければ教えてください。
私の場合は、libjpeg.libは既に持ってたので、今回新たにビルドはしてません。
このビルドの際にせんべえさんが参考にしたというサイトですが、
ファイル拡張子を *.c から *.cpp に変更してますね。
私がlibjpeg.libを作った時は、*.c のままです。
このあたり、関係してくるのかな?
imgsaveはC++ではなくCのプログラムなので、もしかしたら…?
>imgsaveはC++ではなくCのプログラムなので、もしかしたら…?
sugarさん何度も有難うございます。
物凄い参考になりました。
再度ライブラリを作ってみることにします。
提示の Web Page のコンパイル手順はずいぶん乱暴ですね。
IJG のコードを可能な限り尊重すべきだと思います。
MFC 配下で使うのであればマルチスレッドが必須なので
・jmorecfg.h の RGB->BRG 順の変更
・makefile.vc の CFLAG= 行に -MT を追加
の2点だけに絞るべきです。他の変更は不要。
んでコマンドプロンプトから nmake -f makefile.vc でライブラリ作成。
んで、自作コードのほうは
extern C {
#include jpeglib.h
}
とすべきでしょう。
返信有難うございました。
現在も解決しないままです。
私も原因が作成したライブラリのような気がします。
そこで、tetrapod さんのアドバイスも参考にさせていただきたいのですが
自作コードのところが良く分かりません。
もしよろしければご教授ください。
1.jmorecfg.h の RGB->BRG 順の変更⇒ここはいまいちよく分からず
上記のページの変更のままです。
これはどういった意味でしょうか?
2.CFLAGS= $(cflags) $(cdebug) $(cvars) -I-MT. で変更を行いました。
以上を変更してDOSでコマンドを打ち込みましたが以下のような結果になりました。
'nmake' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
make -f makefile.vc
makefile.vc:12: *** missing separator. Stop.