c++ - 在 Windows 上与 taglib 链接错误

标签 c++ linker mingw taglib

我为 Windows 构建了 taglib 静态库,如下所示。必须使用 mingw,而不是 VS。

  1. 查看 git clone https://github.com/taglib/taglib.git git_taglib
  2. 使用来自 cmake.org 的 Win32 安装程序安装 cmake
  3. 配置 cmake -G "MinGW Makefiles"-DCMAKE_INSTALL_PREFIX=/C/taglib_package -DCMAKE_C_COMPILER=/C/MinGW4.4/bin/gcc.exe -DCMAKE_CXX_COMPILER=/C/MinGW4.4/bin/g++。 exe -DENABLE_STATIC=ON -DENABLE_STATIC_RUNTIME=ON -DHAVE_ZLIB=0
  4. 编译mingw32-make.exe
  5. 安装mingw32-make.exe installC:\taglib_package

在我的 Qt 项目中,我是这样使用这个库的

.pro

INCLUDEPATH+="C:/taglib_package/include/taglib"
QMAKE_LIBDIR += "C:/taglib_package/lib"
LIBS+= -lz -ltag

.cpp

#include "fileref.h"
#include "taglib.h"
...
TagLib::FileRef f("Z:/Documents/sample.mp3");
TagLib::String artist = f.tag()->artist();
std::cout<< "Artist is " << artist << std::endl;

这会导致以下链接错误

release/main.o:main.cpp:(.text+0x93): undefined reference to `_imp___ZN6TagLib8FileNameC1EPKc'
release/main.o:main.cpp:(.text+0xb3): undefined reference to `_imp___ZN6TagLib7FileRefC1ENS_8FileNameEbNS_15AudioProperties9ReadStyleE'
release/main.o:main.cpp:(.text+0xdf): undefined reference to `_imp___ZNK6TagLib7FileRef3tagEv'
release/main.o:main.cpp:(.text+0x101): undefined reference to `_imp___ZN6TagLib6StringD1Ev'
release/main.o:main.cpp:(.text+0x10a): undefined reference to `_imp___ZN6TagLib7FileRefD1Ev'
release/main.o:main.cpp:(.text+0x210): undefined reference to `_imp___ZN6TagLib7FileRefD1Ev'
release/main.o:main.cpp:(.text+0x2bd): undefined reference to `_imp___ZN6TagLib6StringD1Ev'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [release\taglib_experiment.exe] Error 1
mingw32-make: *** [release] Error 2
19:56:21: The process "C:\MinGW4.4\bin\mingw32-make.exe" exited with code 2.
Error while building/deploying project taglib_experiment (kit: Desktop)
When executing step 'Make'

该代码在 Mac 上运行良好。所以我想罪魁祸首是 lib。我应该如何编译库来解决上述链接错误?

最佳答案

编译您的代码时使用-DTAGLIB_STATIC开关

关于c++ - 在 Windows 上与 taglib 链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26889486/

相关文章:

opencv - 链接错误:对 `cv::VideoCapture::open(std::string const&)`的 undefined reference

c - GDB进入动态链接器(ld.so)代码

c - 链接 GCC 构建的静态库时,MSVC 项目缺少 "__popcountdi2"

c++ - 我怎样才能修复这个教科书程序以在 C++ 中添加多项式?

c++ - opencv帧差异未处理的异常

c++ - 从 C++ 调用以 Julia 回调函数作为参数的 Julia 函数

c++ - 指示 GCC 链接为 C++

windows - 将较新的 OpenGL 与 MinGW 结合使用

c++ - 无法使用 MinGW C++ 在 NetBeans IDE 7.3 中编译 "Hello World"

c++ - 递归函数以另一种方式打印