Я отчаянно пытаюсь получить фокусное расстояние от изображения JPG с использованием как Qt (для графического интерфейса), так и exiv2 (для данных EXIF) в Windows, плюс QtCreator как IDE. Я прошел через все здание этой настолько хорошо документированной библиотеки, которая дала мне некоторую .dll для динамической компоновки. DLL-файлы построены на 32 бита, так как я использую 32-битный бит в QtCreator gui. Не было ошибок при создании библиотек с визуальной студией, DLL не пуст и т. Д.Qt не будет компилировать проект с использованием exiv2.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 не был объявлен», «ожидаемый»; перед «изображением» и т. д., хотя я выполнил qmake без ошибок. Зачем?
Я новичок на C++, поэтому я, возможно, пропустил важную вещь или два, или мое понимание динамической связи может быть неправильным. Но мне действительно нужна помощь здесь. Я не могу поверить, что мне так сложно получить фокусное расстояние.
PS: Когда я пытаюсь связать статические библиотеки, компоновщик говорит, что не может найти цель для «exiv2.a».
я бы ожидать, что если вы собираетесь для использования mingw вам нужно построить 'exiv2' с mingw не визуальной студией. – drescherjm
Хорошо, я собираюсь попробовать это. –
Ну ладно, мне пришлось включать заголовки. Конечно. Я забыл, что не нашел их после компиляции с визуальной студией. Благодаря ! –