TagLib i projekt QT

0

Witam. Pracuję nad projektem QT, który będzie wykorzystywał bibliotekę TagLib. Kompilowałem ją już kilka razy według różnych metod:
http://joelverhagen.com/blog/2010/11/how-to-compile-taglib-on-windows/
http://mixxx.org/wiki/doku.php/build_windows_dependencies#taglib
Dodawałem do QT Creatora na różne sposoby: jako bibliotekę statyczną, dynamiczną, zdefiniowałem makro TAGLIB_STATIC w projekcie, jednak za każdym razem, kiedy próbuję utworzyć obiekt Taglib::FileRef są te same problemy:

undefined reference to `TagLib::FileRef::~FileRef()' 
undefined reference to `TagLib::FileName::FileName(char const*)' 
undefined reference to `TagLib::FileRef::FileRef(TagLib::FileName, bool, TagLib::AudioProperties::ReadStyle)'
release/playlist.o: bad reloc address 0x45 in section `.text$_ZN5QListI7QStringED1Ev[__ZN5QListI7QStringED1Ev]'
error: ld returned 1 exit status

No chyba, że usunę #define TAGLIB_STATIC wówczas dostaję coś takiego

undefined reference to `_imp___ZN6TagLib7FileRefD1Ev'
undefined reference to `_imp___ZN6TagLib8FileNameC1EPKc'
undefined reference to `_imp___ZN6TagLib7FileRefC1ENS_8FileNameEbNS_15AudioProperties9ReadStyleE'
release/playlist.o: bad reloc address 0x45 in section `.text$_ZN5QListI7QStringED1Ev[__ZN5QListI7QStringED1Ev]'

Szukałem już w wielu miejscach - nigdzie nie mogłem znaleźć rozwiązania tego problemu. Może ktoś tutaj będzie w stanie pomóc? Nie wierzę, żeby to było niewykonalne (chociaż na prawdę niepokoi mnie brak skuteczności wszystkich rozwiązań i tutoriali znalezionych w internecie). Z góry dziękuję za pomoc.

0

Wygląda jakbyś tylko inkludował tę bibliotekę, ale jej nie linkował. Zamiast bawić się w kreatory, dodaj po prostu odpowiednie komendy do pliku .pro, t.j. LIBS += -llibka i ewentualnie LIBS += -Lfolderlibki

Pamiętaj, że musi być skompilowana tym samym kompilatorem (wraz z flagami kompilacji), którego używasz do kompilowania swojego programu.

0

Po wykorzystaniu tego samego kompilatora (MSVC 2013) , program rzeczywiście się uruchamia w trybie Release, jednak kiedy chcę uruchomić go w trybie Debug, nieoczekiwanie kończy pracę. Skompilowałem drugą wersję taglib w trybie debug i również dołączyłem ją do projektu (jako debug). Jednak nic to nie dało. Chciałbym mieć możliwość debugowania mojego programu. Jak mogę to naprawić? Aha, tak wygląda mój projekt (a konkretnie ten moment, w którym jest wspomniana bibliotego taglib)

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/taglib/ -ltag
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/taglib/ -ltagd

INCLUDEPATH += $$PWD/lib/taglib
DEPENDPATH += $$PWD/lib/taglib

win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/lib/taglib/tag.lib
else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/lib/taglib/tagd.lib
 
1

lekki offtopic:
pod debianem coś takiego załatwia sprawę:

unix {
    CONFIG += link_pkgconfig
    PKGCONFIG += taglib
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1