尝试编译 RtAudio 时出现未定义的符号
Posted
技术标签:
【中文标题】尝试编译 RtAudio 时出现未定义的符号【英文标题】:Undefined Symbols when trying to compile RtAudio 【发布时间】:2012-12-03 12:46:48 【问题描述】:我正在尝试同时使用 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
我对这类东西很陌生(到目前为止,大部分框架都是现成的)并且还没有弄清楚这一点。由于这是默认示例,我真的不知道下一步该做什么...... 提前致谢。
【问题讨论】:
尝试添加-framework CoreFoundation
。
是的,解决了,谢谢!
好的 - 太好了 - 我已将我的评论转换为答案 - 请将其标记为已接受,以便将来访问该问题的人受益。
【参考方案1】:
缺少的符号在CoreFoundation框架中——你需要添加:
-framework CoreFoundation
到你的命令行。
【讨论】:
以上是关于尝试编译 RtAudio 时出现未定义的符号的主要内容,如果未能解决你的问题,请参考以下文章
将 Firebase 与 Google Toolbox for Mac 一起使用时出现未定义符号 Xcode 错误
使用 node-sass 编译 SCSS 时出现未定义变量错误