我在我的Qt项目中编译和使用TagLib 1.6.3非常困难。我已经试过我能想到的所有方法了。TagLib声称它是通过CMake支持的,但我没有任何幸运。此外,我甚至不知道我的Qt库需要什么样的文件!
我已经构建了*.a文件、*.lib和*.dll。据我目前所知..。我相信,因为我在Windows下工作,所以*.lib就是我想要的。无论我做什么,当我试图编译我的Qt项目时,我总是得到对我试图使用的任何TagLib函数的“未定义的引用”。我尝试过MinGW32,MSYS,Visual Studio2008,甚至交叉编译。什么都没发现。
对我来说更没有意义的是,如果我在Mac上用Qt编译相同的TagLib源代码(我认为是g++?)它工作得很好!在我的Windows编译过程中的某个地方,我肯定出了问题。我可能已经花了大约30个小时(断断续续)试图弄清楚这一点。
因为Qt使用minGW,所以我必须用相同的编译器编译TagLib吗?
如果我用Visual Studio编译*.lib,它们是不是不兼容?
*.a库是否可以在Windows中使用?(假设为minGW)
我仍然在努力处理C++的东西,但在阅读了无数的论坛帖子和其他问题后,我仍然不太了解。这是我目前在CMake中使用的……
cmake -G "MinGW Makefiles" -DENABLE_STATIC=ON -DHAVE_ZLIB=0 -DWITH_MP4=1 -DMAKE_TAGLIB_LIB=1
cmake --build ./
这将生成一个大小约为2MB的*.a文件。Mac上的工作库大小约为3MB,发布模式下Visual Studio的*.lib大小约为4MB。请谁把我从这种C++跨平台命令行的疯狂中拯救出来,因为我已经无计可施了。我甚至可能会付钱让你给我编译一些%!$#&ing库。谢谢。
发布于 2010-10-07 17:35:45
既然Mac是为你工作的,我只是在说Win32。
好了,这是我的Taglib.pro和我的project.pro的摘录:https://gist.github.com/449ea81ce92f52399f41。看看他们。我的Taglib可能有点过时了,所以要小心,你可能在那里丢失了一些文件。还要注意相对路径。它们都是相对于.pro文件的。
我只是在标记库目录中运行了cmake .
。这应该会产生一个config.h
和一个taglib_config.h
当你使用QtCreator和mingw时,你肯定只需要libTaglib.a
--gcc。*.lib是MSVC特有的!
发布于 2011-05-06 01:41:49
此blog post详细说明了此线程中描述的整个过程。
这篇博文的作者Joel非常友好地提供了为windows编译的binaries of taglib 3.6.3。
发布于 2012-08-18 00:11:21
我将cmake用于我的projects.Here是我的cmake文件,用于我制作的一个使用标记库的媒体播放器。我将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}是重要的。希望这能帮助到一些人。
https://stackoverflow.com/questions/3878883
复制相似问题