我正在尝试编译一个依赖 qt、portaudio 和FLAC的项目( swac-record ) 。我在 Mac OS X 上。
这是我到目前为止所得到的:
qmake swac-record-0.4 // This creates a Makefile at the same level as the project and .pro and .qrc files inside the project.
qmake swac-record-0.4/swac-record.pro // not sure what this does exactly
make // will compile the whole project
...但随后编译失败,因为某些符号无法解析。
Undefined symbols for architecture x86_64:
"_FLAC__StreamDecoderErrorStatusString", referenced from:
DecoderFlac::error_callback(FLAC__StreamDecoderErrorStatus) in codec_flac.o
"_FLAC__StreamDecoderInitStatusString", referenced from:
DecoderFlac::decode(Channel&) in codec_flac.o
"_FLAC__metadata_object_new", referenced from:
EncoderFlac::setTag(Tag const&) in codec_flac.o
"_FLAC__metadata_object_vorbiscomment_append_comment", referenced from:
EncoderFlac::setTag(Tag const&) in codec_flac.o
"_FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair", referenced from:
EncoderFlac::setTag(Tag const&) in codec_flac.o
我真的没有 C++ 的经验。反正我的理解是编译失败是因为找不到FLAC库。
该项目的网站说它使用Flac++ (libflac++-dev),并且在代码中这样引用它:
#include <FLAC++/decoder.h>
#include <FLAC++/encoder.h>
然后我的问题变成:
- 如何安装 libflac++?(它不是
flac
已经安装在 Mac 上吗?) - 如何链接到 libflac++?
我没有太多运气研究这个问题(我得到的最接近的是这个问题,但我没有使用 Xcode。)
编辑:按照 ddriver 的建议,我自己构建了 libflac 并将其添加到项目中。
构建 libflac:我得到了源代码并使用./configure && make && make check && make install
. 据我所知,一切顺利:
pkg-config --list-all | grep FLAC++
ls /usr/local/lib | grep FLAC
flac++ FLAC++ - Free Lossless Audio Codec Library (C++ API)
libFLAC++.6.dylib
libFLAC++.a
libFLAC++.dylib
libFLAC++.la
将其添加到项目中: 我通过编辑 swac-record.pro 并像这样添加库来做到这一点(这个线程有帮助):
INCLUDEPATH += /usr/local/lib
LIBS += -L"/usr/local/lib" -lFLAC++
但是,我仍然遇到同样的Undefined symbols
错误。我错过了什么?