複数のデータファイルを読み込んできて内部で画像を作り、CImageを通して吐き出すプログラムを組んでいます。
データファイル読み込み部分は、コモンダイアログで行っており、
OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_EXPLORER | OFN_ALLOWMULTISELECT
をオプションにつけて複数ファイルに対応しています。
デバッグモードで行うと問題ないのですが、リリースモードにした場合、読み込みファイルが十数個になった辺りで唐突にCImageがエラーを起こします。
(十個以内程度であれば、やはり問題なく動作しています)
エラーが出るのは、CImage.Save()で、返り値にたどり着く以前に落ちてしまっています。
具体的にはCImage::CInitGDIPlus::ReleaseGDIPlus()関数内の
EnterCriticalSection(&m_sect);
のm_sectがとれずにアクセス違反になっています。CImageのインスタンス自体は存在しているのですが、複数ファイルを読み込んだ瞬間にビットマップの中身が0になることがあるため、壊れているのではないかと思われます。
デバッグモードとリリースモードでは実行速度が10倍くらい違うので、できればリリースモードの速度がほしいです。
何か情報お持ちの方、アドバイス等お願いします。
最大限に単純化したプログラムに直すと、エラーは出ませんでした。
どうもCImageの使い方を間違っているような気がします…
ツイート | ![]() |