首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QT/exiv2 2应用程序在一些Windows机器上崩溃

QT/exiv2 2应用程序在一些Windows机器上崩溃
EN

Stack Overflow用户
提问于 2013-11-13 20:41:33
回答 1查看 512关注 0票数 1

我不是Windows用户,但我试图帮助将一个QT项目移植到Windows中,这会遇到一些非常奇怪的问题(无论如何,对我来说)。我希望有人能帮我找到正确的方向。

因此,我可以在Windows7专业32位计算机(QT5.1.1、MinGW 4.8.1、exiv2)上成功构建该项目。虽然所有的程序都在构建机器上工作,但是程序在一些机器上崩溃(到目前为止,它是在64位Windows 7专业版和32位Windows 7上崩溃的),但是在另一些机器上运行。崩溃消息并不那么有用,因为它是一个通用的StackHash / APPCRASH错误。我尝试过更改DEP设置,但这并没有用(我不确定我是否会接受它作为“解决方案”)。我缩小了崩溃发生的地方(谢天谢地,这是一致的),下面是一个示例片段(在文件夹中读取jpeg文件并打印其时间戳)。

调用exiv2中的任何函数(exv2-12.dll)将导致程序崩溃

代码语言:javascript
复制
    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);

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-16 12:02:24

好吧,我已经解决了。事实证明,exiv2是用与Qt不同版本的gcc编译的。所以,我不得不用同一个编译器重新编译所有的东西。对于项目正在使用的所有库,最兼容的版本是4.4,所以我不得不降级到Qt-4.8.5,并静态地链接所有内容。

我仍然不知道为什么它会在一些机器上工作,而不是在一些机器上工作。:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19963904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档