• ベストアンサー

VC++6.0 ライブラリを用いたTIFF画像の読み込み

タイトル通りのことを行おうと、libtiffなるTIFFのライブラリをWEBより落としてきてVC++6.0でプログラミングをしています。 TIFF画像をBITMAP画像にするべく以下のようにソースを記述しました。 HDIB CTiff::LoadTIFFinDIB(CString path) { TIFF *image; unsigned long imageLength; unsigned long imageWidth; unsigned int BitsPerSample; unsigned long LineSize; unsigned int SamplePerPixel; unsigned long RowsPerStrip; int PhotometricInterpretation; long nrow; unsigned long row; char *buf; LPBITMAPINFOHEADER lpDIB; HDIB hDIB; char *lpBits; HGLOBAL hStrip; int i,l; int Align; CSize size; char *p = new char[path.GetLength()+1]; strcpy(p, path); image = TIFFOpen(p, "r"); delete [] p; if(!image) goto TiffOpenError; ・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・ ところが、TIFFOpenで絶対Access Violationのエラーで落ちてしまいます。 この原因がわかる方、ご教授ください。 ちなみにOSはWindows2000 Proです。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

とりあえず、 TIFFOpenまでにやってることってCStringの中身をいじってるくらいしかないんで、pathの中身が入っているかどうかをデバッグしてみてくださいとかしかいえませんねぇ。 あとは、MFCを使わずに、できる限り簡単なソースにして再現するか。 http://www-6.ibm.com/jp/developerworks/linux/020517/j_l-libtiff.html こんな感じにしてみて、TIFFOpenができるか確認してみてください。

mkmarimo
質問者

お礼

ご回答ありがとうございます。 原因がわかりました、というか、別の方法で解決しました。 ありがとうございました。

その他の回答 (1)

noname#11476
noname#11476
回答No.2

libtiffは使ったことがあるし、DLL化もしたことがありますけど、、、、TIFFOpenで落ちたことはないですねぇ。 ちなみに、 image = TIFFOpen("test.tif", "r"); と実在ファイルtest.tifをpの代わりに直接指定しても落ちますか?

mkmarimo
質問者

お礼

ご回答ありがとうございます。 原因がわかりました、というか、別の方法で解決しました。 ありがとうございました。

関連するQ&A