Включите id3lib в проект QT, C++
==================================
Конфигурация:
- Qt Creator 2.8.1
- Qt 5.1.1
- Windows 7 64 бит
==================================
Как я могу включить библиотеку id3lib?
Я уже загрузил необходимые файлы (.h, .dll, .lib и.exp) с http://sourceforge.net/projects/id3lib/files/
Я уже включил все.h файл в свой проект:
HEADERS += audioTest.h \
id3.h \
id3/writers.h \
id3/writer.h \
id3/utils.h \
id3/tag.h \
id3/sized_types.h \
id3/readers.h \
id3/reader.h \
id3/misc_support.h \
id3/io_strings.h \
id3/io_helpers.h \
id3/io_decorators.h \
id3/id3lib_strings.h \
id3/id3lib_streams.h \
id3/id3lib_frame.h \
id3/helpers.h \
id3/globals.h \
id3/field.h
Тогда я включил библиотеку:
win32: LIBS += -L$$PWD/id3lib/ -lid3lib
INCLUDEPATH += $$PWD/id3lib
DEPENDPATH += $$PWD/id3lib
win32: PRE_TARGETDEPS += $$PWD/id3lib/id3lib.lib
Затем, когда я выполняю приведенный ниже пример, он говорит мне,
undefined reference to ID3_Tag::ID3_Tag(char const*)'
undefined reference to 'ID3_Tag::~ID3_Tag()'
error: ld returned 1 exit status
Код:
ID3_Tag tag("a.mp3");
Что-то не так с тем, что я сделал? я знаю undefined reference to *
означает плохое включение библиотеки, но я не могу найти, где я потерпел неудачу.
И я не могу найти решение в Интернете:
- Здесь они решили использовать
taglib
, но я читал здесь, id3lib был лучше. - Здесь они говорят
LIBS += /usr/lib/libid3.a
работает. Но не в Windows. - ...
У кого-нибудь есть идея?
2 ответа
Как вы компилируете? Я имею Linux и скомпилирую с g++ -lid3 -lz. Ключ -lid3 предназначен для id3lib, который также нуждается в сжатии, поэтому -lz.
У вас есть несколько проблем...
Прежде всего, вам не нужно включать сторонние заголовки в ваш HEADERS
переменная. Вам нужно только указать место для INCLUDEPATH
если есть
Во-вторых, вам нужно будет указать имя библиотеки и место для LIBS
переменная следующим образом:
LIBS += -L/path/to/id3lib/installation -lid3libname