尝试编译 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 时出现未定义的符号的主要内容,如果未能解决你的问题,请参考以下文章

在ruby中编译时出现未定义的方法错误

将 Firebase 与 Google Toolbox for Mac 一起使用时出现未定义符号 Xcode 错误

使用 node-sass 编译 SCSS 时出现未定义变量错误

尝试在 SharePoint 环境中使用 AngularJS DateRangePicker 时出现未定义错误

尝试在 React 中映射子对象时出现未定义错误

尝试在 React 中更改状态时出现未定义的错误