Компиляция статических библиотек TagLib 1.6.3 для Windows

Мне очень трудно компилировать и использовать TagLib 1.6.3 в моем проекте Qt. Я перепробовал все, что мог придумать. TagLib утверждает, что он поддерживается через CMake, но мне не повезло. Кроме того, я смущен тем, какие файлы мне даже нужны для моих Qt-библиотек!

Я создал *.папка.* ,lib, and *.файл DLL. Из того, что я понял до сих пор... Я считаю, что поскольку я работаю в Windows *.Либ-это то, чего я хочу. Не важно, что я делаю, я всегда заканчиваю "неопределенные ссылки" на любые функции TagLib, которые я пытаюсь использовать, когда пытаюсь скомпилировать свой проект Qt. Я пробовал MinGW32, MSYS, Visual Studio 2008 и даже кросс-компиляцию для Windows на Linux. Все поднимая ничего.

что имеет еще меньший смысл для меня, если я скомпилирую тот же источник TagLib с Qt на Mac (G++, я думаю?) работает отлично! Где-то в моих процедурах компиляции Windows я должен ошибаться. Я бил мое лицо на моем столе, вероятно, около 30 (на и off) часы, пытаясь понять это.

поскольку Qt использует minGW, должен ли я компилировать TagLib с тем же компилятором?

Если я скомпилировать *.lib с Visual Studio они не совместимы?

Are *.библиотеки, даже используемые в Windows? (предполагая, что мингв)

Я все еще пытаюсь разобраться в этом c++ материале, но после чтения бесчисленных потоков форума и других вопросов я все еще не хватает. Вот с чем я работал в CMake в настоящий момент...

cmake -G "MinGW Makefiles" -DENABLE_STATIC=ON -DHAVE_ZLIB=0 -DWITH_MP4=1 -DMAKE_TAGLIB_LIB=1
cmake --build ./

Это создает один *.файл размером ~2 МБ. Рабочая библиотека на Mac была ~3MB, а *.lib из Visual Studio был ~4 МБ в режиме выпуска. Пожалуйста, кто-нибудь спасите меня от этого c++ кросс-платформенного безумия командной строки, потому что я нахожусь в конце моего остроумия. Я, вероятно, даже заплатил бы вам, чтобы просто собрать мне некоторые %!$#&ков библиотеки. Спасибо.

3 ответов


поскольку Mac работает на вас, я просто говорю о Win32.

хорошо, это мой Taglib.pro и отрывок из моего проекта.pro:https://gist.github.com/449ea81ce92f52399f41. Проверьте их. Мой Taglib может быть немного устаревшим, поэтому позаботьтесь, некоторые файлы, которые у вас могут отсутствовать. Также позаботьтесь об относительных путях. Они все относительно .pro файл.

Я просто побежал cmake . внутри каталога taglib. Это должно привести к config.h и a taglib_config.h

вам определенно нужно только libTaglib.a при использовании QtCreator и mingw-gcc. *.lib специфичны для MSVC!


этой блоге детализирует весь процесс, описанный в этом потоке.

автор сообщения в блоге, Джоэл, был достаточно хорош, чтобы предоставить двоичные файлы taglib 3.6.3 скомпилировано для windows.


Я использую cmake для своих проектов.Вот мой файл cmake для медиаплеера, который я сделал, который использует taglib. Я установил taglib в /usr / local/ (таким образом, мне не нужно ничего менять при компиляции в Linux). Важные части имеют стрелку.

project(qtmu3)
find_package(Qt4 REQUIRED)
-> find_library(TAGLIB_LIB tag PATH /usr/local/lib/)
set(QT_USE_PHONON TRUE)
set(QTMU_SRCS main.cpp mainwindow.cpp WidgetMarqueeLabel.cpp single_application.cpp)
set(QTMU_MOC_HDRS mainwindow.h WidgetMarqueeLabel.h single_application.h)
set(QTMU_UI_FILES mainwindow.ui)
set(QTMU_RSRC_FILES myresources.qrc)
-> include_directories(/usr/local/include/taglib/)
set(CMAKE_CXX_FLAGS "-mwindows")
include(${QT_USE_FILE})
QT4_WRAP_UI( QTMU_UI_HDRS ${QTMU_UI_FILES})
QT4_WRAP_CPP( QTMU_MOC_SRCS ${QTMU_MOC_HDRS})
QT4_ADD_RESOURCES(QTMU_RSRC_SRCS ${QTMU_RSRC_FILES})
INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR} )
ADD_EXECUTABLE(qtmu3 ${QTMU_SRCS} ${QTMU_MOC_SRCS} ${QTMU_RSRC_SRCS} ${QTMU_UI_HDRS})
-> TARGET_LINK_LIBRARIES(qtmu3 ${QT_LIBRARIES} ${TAGLIB_LIB}) 

последний, важен только ${TAGLIB_LIB}. надеюсь, это кому-то поможет.