RE^4:スライドショーで例外が発生
(
りさりさ
)
1999/06/06 23:04
問題は解決しました。kanaさんの助言がヒントになりました。
SUSIEと自作のプラグイン及びそれに必要なDLLを同一のディレクトリに放り込んで、DebugモードでVC6上から実行しました。
ファイルの展開に成功した場合は、OutputDebugString()でファイル名を出力するようにしました。
まず、JPEGファイルだけを同一のディレクトリに放り込んでスライドショウを実行したあと、SUSIEを終了しました。なお、実行に利用したファイルは以下の5つ。
Ailin.jpg、ASTA591.JPG、ASTA592.JPG、defaul1_jpgarai4.jpg、f-ccsakura.jpg
(DLLのシンボルについてのメッセージは省略)
スレッド 0xB1 終了、終了コード 0 (0x0)。
スレッド 0x85 終了、終了コード 1 (0x1)。
スレッド 0xBE 終了、終了コード 1 (0x1)。
スレッド 0xA1 終了、終了コード 0 (0x0)。
Success - D:\User\graphic_data\Test\Ailin.jpg
Success - D:\User\graphic_data\Test\ASTA591.JPG
Success - D:\User\graphic_data\Test\ASTA592.JPG
Success - D:\User\graphic_data\Test\defaul1_jpgarai4.jpg
Success - D:\User\graphic_data\Test\f-ccsakura.jpg
スレッド 0x46 終了、終了コード 0 (0x0)。
スレッド 0x75 終了、終了コード 0 (0x0)。
プログラム 'D:\User\Projects\VC6\IFJPEG\Debug\Susie.exe' はコード 0 (0x0) で終了しました。
JPEGファイルだけの場合では問題無く実行できたようです。
つぎに、BMPファイル(DEZIKO.BMP)を同じディレクトリに放り込んでスライドショウを実行した後、プログラムを終了しました。
(DLLのシンボルについてのメッセージは省略)
スレッド 0x97 終了、終了コード 0 (0x0)。
スレッド 0xA3 終了、終了コード 1 (0x1)。
スレッド 0x81 終了、終了コード 1 (0x1)。
スレッド 0x94 終了、終了コード 0 (0x0)。
Success - D:\User\graphic_data\Test\Ailin.jpg
Success - D:\User\graphic_data\Test\ASTA591.JPG
Success - D:\User\graphic_data\Test\ASTA592.JPG
Success - D:\User\graphic_data\Test\defaul1_jpgarai4.jpg
例外処理 (初回) は Susie.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception。
例外処理 (初回) は Susie.exe (NTDLL.DLL) にあります: 0xC0000025: Noncontinuable Exception。
Success - D:\User\graphic_data\Test\f-ccsakura.jpg
スレッド 0x4C 終了、終了コード 0 (0x0)。
スレッド 0x3E 終了、終了コード 0 (0x0)。
プログラム 'D:\User\Projects\VC6\IFJPEG\Debug\Susie.exe' はコード 0 (0x0) で終了しました。
BMPファイルをいれたときだけ、例外が発生するようです。
そこで、次にBMPファイルの拡張子をJPGにして実行してみました。
すると、
(省略)
例外処理 (初回) は Susie.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception。
例外処理 (初回) は Susie.exe (NTDLL.DLL) にあります: 0xC0000025: Noncontinuable Exception。
Success - D:\User\graphic_data\Test\f-ccsakura.jpg
例外処理 (初回) は Susie.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception。
例外処理 (初回) は Susie.exe (NTDLL.DLL) にあります: 0xC0000025: Noncontinuable Exception。
(省略)
例外が2回発生するようになりました。これでピンと来ました。IsSupported()にブレイクポイントを設定してみると例外をthrowしていました。私は読めるはずの無いファイルでは例外を発生させるように下記のようにプログラムしていました。
try {
if( ijlInit( &image ) != IJL_OK ) { throw; }
image.JPGFile = filename;
if( ijlRead( &image, IJL_JFILE_READPARAMS ) != IJL_OK ) { throw; } //これが原因
// if( ijlFree( &image ) != IJL_OK ) { throw; }
} catch(...) {
ijlFree( &image );
return 0;
}
return 1;
そこで、ijlRead()に失敗しても例外を発生しないようにしたところスライドショーも問題無く動くようになりました。
教訓:SUSIEプラグインで例外を発生させてはいけない(^^;
どうもお騒がせしました。
--「RE^4:スライドショーで例外が発生」に対するコメント--
タイトル(Subject):
お名前(Your name):
Mail address:
Password:
:入力しておくとあとで削除できます
Your message:
7thBridge P ver0.26 (c)Takechin