Хобрук: Ваш путь к мастерству в программировании

Как я могу использовать taglib в Qt?

Скачав taglib (версия 1.11.1) с сайта taglib.org, я собрал его с помощью cmake и получил .dll и .dll.файл. Затем я перенес папку taglib туда, где находится папка моего проекта Qt, и назвал ее «myTaglib», как на этом рисунке.

Когда я перейду в папку myTaglib, я получу эти элементы

Теперь, перейдя в файл .pro, я попытался сделать ссылку на taglib:

QT += quick multimedia core
CONFIG += c++11
INCLUDEPATH += $$PWD/myTaglib
DEPENDPATH += $$PWD/myTaglib
LIBS += -L$$PWD/myTaglib -llibtag

И в заголовочном файле я включил необходимые файлы и using namespace TagLib вот так:

#include <tag.h>
#include <fileref.h>
#include <mpeg/id3v2/id3v2tag.h>
#include <mpeg/mpegfile.h>
#include <mpeg/id3v2/id3v2frame.h>
#include <mpeg/id3v2/id3v2header.h>
#include <mpeg/id3v2/frames/attachedpictureframe.h>
using namespace TagLib;

В конце концов, я построил свой проект и получил несколько ошибок:

...
undefined reference to `__imp__ZN6TagLib8FileNameC1EPKc' in player.cpp - line 94
undefined reference to `__imp__ZN6TagLib7FileRefC1ENS_8FileNameEbNS_15AudioProperties9ReadStyleE' in player.cpp - line 94
undefined reference to `__imp__ZNK6TagLib7FileRef3tagEv' in player.cpp - line 95
undefined reference to `__imp__ZNK6TagLib6String10toCWStringEv' in player.cpp - line 97
undefined reference to `__imp__ZNK6TagLib6String10toCWStringEv' in player.cpp - line 96
...

Затем я проверил эти строки, но они не показали что-то вроде подчеркнутой ошибки или красного текста или что-то в этом роде, вы можете видеть это изображение

Как новичок в Qt, я действительно смущен этими ошибками. Я надеюсь, что вы, ребята, можете просветить меня и помочь мне справиться с этой проблемой. Большое спасибо

09.09.2019

  • Какой компилятор вы используете для компиляции приложений Qt? Я думаю, что общая библиотека была создана с использованием MinGW/gcc. 11.09.2019
  • @MariuszZieliński Я использую MinGW для компиляции своего проекта, и я также создал taglib с MinGW. 11.09.2019

Ответы:


1

Фактическое имя библиотеки — «тег», поэтому вам просто нужно изменить имя библиотеки.

LIBS += -L$$PWD/myTaglib/ -ltag
09.09.2019
  • Нет, это вообще не работает. Возникла ошибка не может найти -ltag 09.09.2019
  • Не могли бы вы попробовать перестроить проект? Я тестировал как в Windows, так и в Linux, и я мог связать библиотеку с помощью -ltag. 09.09.2019
  • Я пытался перестроить свой проект много раз, но это не сработало. Я не знаю, был ли мой проект хорошо организован или нет. Не могли бы вы рассказать мне больше о том, как вы пытались? Большое спасибо 09.09.2019
  • Новые материалы

    Решения DBA Metrix
    DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

    Начало работы с Блум
    Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...