gpt4 book ai didi

c++ - Qt 不会使用 exiv2.dll 编译项目

转载 作者:太空宇宙 更新时间:2023-11-04 13:42:21 25 4
gpt4 key购买 nike

我拼命地尝试在 Windows 上使用 Qt(用于 GUI)和 exiv2(用于 EXIF 数据)以及作为 IDE 的 QtCreator 从 JPG 图片中获取焦距。我经历了这个文档如此丰富的库的所有构建过程,它为我提供了一些用于动态链接的 .dll。dll 以 32 位构建,因为我在 QtCreator gui 中使用 32 位 mingw。使用 visual studio 构建库时没有错误,dll 不为空等。

这里是使用exiv2的类的构造函数代码,其中focalLength是一个静态属性,img另一个属性和路径一个QString:

img=new QImage(path);
std::string stdPath=path.toStdString();
if(!focalLength)
{
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(stdPath);
image->readMetadata();
Exiv2::ExifData &exifData = image->exifData();
Exiv2::ExifKey key(Exif.Image.FocalLength);
Exiv2::ExifData::const_iterator pos = exifData.findKey(key);
if(pos!=exifData.end())
focalLength=(double)pos->getValue();
else
focalLength(0);
}

库(exiv2.dll 和 exiv2.lib)位于 (projectPath)\exiv2_x32; .pro 文件包含这个,加上头文件和源文件:

win32: LIBS += -L$$PWD/exiv2_x32/ -lexiv2
INCLUDEPATH += $$PWD/exiv2_x32
DEPENDPATH += $$PWD/exiv2_x32

但是当我尝试编译我的代码时,无论我多么努力地尝试,我都会得到相同的输出,“Exiv2 has not been declared”,“expected ';'在 'image'"之前,等等,尽管我执行 qmake 没有错误。为什么?

我是 C++ 的新手,所以我可能错过了一两件重要的事情,或者我对动态链接的理解可能是错误的。但我真的,真的需要帮助。我无法相信获得焦距对我来说如此困难。

PS:当我尝试链接静态库时,链接器说它找不到“exiv2.a”的目标。

最佳答案

如果 header 在 $$PWD/exiv2_x32 中可用,那么您可能犯了一些令人遗憾的错误,例如:

#include "image.hpp"

或者搞砸了你的 include guards,等等。

关于c++ - Qt 不会使用 exiv2.dll 编译项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27316782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com