私は Windows ユーザーではありませんが、QT プロジェクトを Windows に移植する手助けをしようとしています。誰かが私を正しい方向に向けるのを手伝ってくれることを願っています。
そのため、Windows 7 プロフェッショナル 32 ビット マシン (QT 5.1.1、MinGW 4.8.1、exiv2) でプロジェクトを正常にビルドできます。ビルド マシンではすべてが機能しますが、一部のマシンではプログラムがクラッシュします (これまでのところ、64 ビットの Windows 7 Professional と別の 32 ビットの Windows 7 でクラッシュしています)。クラッシュ メッセージは一般的な StackHash / APPCRASH エラーであるため、あまり役に立ちません。DEP 設定を変更しようとしましたが、役に立ちませんでした (そして、それを「解決策」として受け入れるかどうかはわかりません)。クラッシュが発生する場所を絞り込みました (ありがたいことに一貫性があります)。スニペットの例 (フォルダー内の jpeg ファイルを読み取り、タイムスタンプを出力する) を以下に示します。
exiv2 (exiv2-12.dll) の関数を呼び出すと、プログラムがクラッシュします。
Exiv2::Image::AutoPtr exiv = Exiv2::ImageFactory::open(imagePath);
exiv->readMetadata();
Exiv2::ExifData data = exiv->exifData();
Exiv2::Value::AutoPtr v = Exiv2::Value::create(Exiv2::asciiString);;
if (data.findKey(dateTimeOriginal) != data.end())
v = (data.findKey(dateTimeOriginal))->getValue();
else if (data.findKey(dateTimeDefault ) != data.end())
v = (data.findKey(dateTimeDefault ))->getValue();
QString dateTime(v->toString().c_str());
this->ui->plainTextEdit->appendPlainText("\n" + dateTime);
どんな助けでも大歓迎です。