在 QT 项目中包括 id3lib,C++

include id3lib in QT project, C++

本文关键字:id3lib C++ 包括 QT 项目      更新时间:2023-10-16

===

==================================

配置:

  • Qt创建者 2.8.1
  • Qt 5.1.1
  • 视窗 7 64 位

====

==================================

如何包含 id3lib 库?

我已经从 http://sourceforge.net/projects/id3lib/files/加载了所需的文件(.h,.dll,.lib和.exp)

我已经在我的项目中包含了所有 .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上。

有人有想法吗?

您有几个问题正在发生...

首先,您不需要将第三方标头包含在HEADERS变量中。您只需指定INCLUDEPATH的位置(如果有)。

其次,您需要指定LIBS变量的库名称和位置,如下所示:

LIBS += -L/path/to/id3lib/installation -lid3libname

你如何编译?我有Linux并使用g ++ -lid3 -lz编译。Switch -lid3 用于 id3lib,它也需要压缩,所以 -lz。