我不是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)将导致程序崩溃
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);任何帮助都将不胜感激。
发布于 2013-11-16 12:02:24
好吧,我已经解决了。事实证明,exiv2是用与Qt不同版本的gcc编译的。所以,我不得不用同一个编译器重新编译所有的东西。对于项目正在使用的所有库,最兼容的版本是4.4,所以我不得不降级到Qt-4.8.5,并静态地链接所有内容。
我仍然不知道为什么它会在一些机器上工作,而不是在一些机器上工作。:)
https://stackoverflow.com/questions/19963904
复制相似问题