尝试编译RtAudio时未定义的符号

时间:2012-12-03 12:46:49

标签: macos compilation makefile undefined-symbol

我正在尝试一起使用RtAudio和RtMidi。我有相同的文件夹RtAudio.cpp,RtAudio.h,RtHelper.h,RtMidi.cpp和RtMidi.h以及2个测试程序,midiprobe.cpp和audioprobe.cpp。

使用default command编译midiprobe,但是当我尝试对audioprobe执行相同操作以测试RtAudio时,我会收到错误。

以下是我用来编译的内容:

g++ -Wall -D__MACOSX_CORE__ -o audioprobe audioprobe.cpp RtAudio.cpp -framework CoreAudio -lpthread

这些是错误:

Undefined symbols for architecture x86_64:
 "_CFRelease", referenced from:
  RtApiCore::getDeviceInfo(unsigned int)in cc89M9Ki.o
"_CFStringGetCString", referenced from:
  RtApiCore::getDeviceInfo(unsigned int)in cc89M9Ki.o
"_CFStringGetLength", referenced from:
  RtApiCore::getDeviceInfo(unsigned int)in cc89M9Ki.o
"_CFStringGetSystemEncoding", referenced from:
  RtApiCore::getDeviceInfo(unsigned int)in cc89M9Ki.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

我对这类东西很陌生(大部分都是现成的框架)并且还未能解决这个问题。既然这是默认的例子,我真的很想知道下一步该做什么...... 谢谢你提前。

1 个答案:

答案 0 :(得分:3)

缺少的符号位于CoreFoundation框架中 - 您需要添加:

-framework CoreFoundation

到您的命令行。