===
==================================配置:
- 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。