1

我不是 Windows 用户,但我正在尝试帮助将 QT 项目移植到 Windows 中,该项目遇到了一些相当奇怪的问题(对我来说,无论如何)。我希望有人可以帮助我指出正确的方向。

因此,我可以在 Windows 7 专业 32 位机器(QT 5.1.1、MinGW 4.8.1、exiv2)上成功构建项目。虽然一切都在构建机器上运行,但程序在某些机器上崩溃(到目前为止,它在 64 位 Windows 7 专业版和另一个 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);

任何帮助将不胜感激。

4

1 回答 1

1

好的,我已经解决了这个问题。原来 exiv2 是用与 Qt 使用的不同版本的 gcc 编译的。因此,我不得不使用相同的编译器重新编译所有内容。对于项目使用的所有库,最兼容的版本是 4.4,因此我不得不降级到 Qt-4.8.5 并静态链接所有内容。

我仍然不确定为什么它会在某些机器上运行而不是在某些机器上运行。:)

于 2013-11-16T12:02:24.223 回答