1

我正在尝试编译一个依赖 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错误。我错过了什么?

4

0 回答 0