c - 尝试 portaudio 示例,但得到 "ld: symbol(s) not found for architecture x86_64"

标签 c macos audio linker portaudio

我正在尝试在 Mac OS 10.10 上使用 portaudio,但是在尝试编译示例程序时出现错误。这是我所做的:

-./configure && make。没问题。

- 将示例文件“pa_devs.c”、libportaudio.a 和 portaudio.h 复制到名为 Test1 的单独目录中

- 试图编译它

gcc -o Test1 pa_devs.c libportaudio.a -lm

- 得到这个错误:
Undefined symbols for architecture x86_64:
  "_AudioConvertHostTimeToNanos", referenced from:
      _GetStreamTime in libportaudio.a(pa_mac_core.o)
      _AudioIOProc in libportaudio.a(pa_mac_core.o)
  "_AudioConverterDispose", referenced from:
      _CloseStream in libportaudio.a(pa_mac_core.o)
  "_AudioConverterFillBuffer", referenced from:
      _AudioIOProc in libportaudio.a(pa_mac_core.o)
  "_AudioConverterNew", referenced from:
      _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o)
  "_AudioConverterReset", referenced from:
      _StartStream in libportaudio.a(pa_mac_core.o)
  "_AudioConverterSetProperty", referenced from:
      _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o)
  "_AudioDeviceAddPropertyListener", referenced from:
      _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o)
      _SetupDevicePropertyListeners in libportaudio.a(pa_mac_core.o)
      _AudioDeviceSetPropertyNowAndWaitForChange in libportaudio.a(pa_mac_core_utilities.o)
  "_AudioDeviceGetProperty", referenced from:
      _PaMacCore_GetChannelName in libportaudio.a(pa_mac_core.o)
      _PaMacCore_GetBufferSizeRange in libportaudio.a(pa_mac_core.o)
      _PaMacCore_Initialize in libportaudio.a(pa_mac_core.o)
      _OpenStream in libportaudio.a(pa_mac_core.o)
      _AudioDevicePropertyActualSampleRateListenerProc in libportaudio.a(pa_mac_core.o)
      _AudioDevicePropertyGenericListenerProc in libportaudio.a(pa_mac_core.o)
      _CalculateFixedDeviceLatency in libportaudio.a(pa_mac_core.o)
      ...
  "_AudioDeviceGetPropertyInfo", referenced from:
      _PaMacCore_GetChannelName in libportaudio.a(pa_mac_core.o)
      _PaMacCore_Initialize in libportaudio.a(pa_mac_core.o)
      _GetChannelInfo in libportaudio.a(pa_mac_core.o)
      _setBestSampleRateForDevice in libportaudio.a(pa_mac_core_utilities.o)
  "_AudioDeviceRemovePropertyListener", referenced from:
      _CloseStream in libportaudio.a(pa_mac_core.o)
      _AudioDeviceSetPropertyNowAndWaitForChange in libportaudio.a(pa_mac_core_utilities.o)
  "_AudioDeviceSetProperty", referenced from:
      _AudioDeviceSetPropertyNowAndWaitForChange in libportaudio.a(pa_mac_core_utilities.o)
      _setBestFramesPerBuffer in libportaudio.a(pa_mac_core_utilities.o)
     (maybe you meant: _AudioDeviceSetPropertyNowAndWaitForChange)
  "_AudioGetCurrentHostTime", referenced from:
      _GetStreamTime in libportaudio.a(pa_mac_core.o)
      _AudioIOProc in libportaudio.a(pa_mac_core.o)
  "_AudioHardwareGetProperty", referenced from:
      _PaMacCore_Initialize in libportaudio.a(pa_mac_core.o)
  "_AudioHardwareGetPropertyInfo", referenced from:
      _PaMacCore_Initialize in libportaudio.a(pa_mac_core.o)
  "_AudioObjectSetPropertyData", referenced from:
      _PaMacCore_Initialize in libportaudio.a(pa_mac_core.o)
  "_AudioOutputUnitStart", referenced from:
      _StartStream in libportaudio.a(pa_mac_core.o)
  "_AudioOutputUnitStop", referenced from:
      _StopStream in libportaudio.a(pa_mac_core.o)
      _AudioIOProc in libportaudio.a(pa_mac_core.o)
  "_AudioStreamGetProperty", referenced from:
      _CalculateFixedDeviceLatency in libportaudio.a(pa_mac_core.o)
  "_AudioUnitAddPropertyListener", referenced from:
      _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o)
  "_AudioUnitGetProperty", referenced from:
      _StopStream in libportaudio.a(pa_mac_core.o)
      _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o)
      _startStopCallback in libportaudio.a(pa_mac_core.o)
  "_AudioUnitInitialize", referenced from:
      _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o)
  "_AudioUnitRender", referenced from:
      _AudioIOProc in libportaudio.a(pa_mac_core.o)
  "_AudioUnitReset", referenced from:
      _StopStream in libportaudio.a(pa_mac_core.o)
  "_AudioUnitSetProperty", referenced from:
      _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o)
  "_AudioUnitUninitialize", referenced from:
      _CloseStream in libportaudio.a(pa_mac_core.o)
  "_CFRelease", referenced from:
      _PaMacCore_GetChannelName in libportaudio.a(pa_mac_core.o)
  "_CFStringCreateWithFormat", referenced from:
      _PaMacCore_GetChannelName in libportaudio.a(pa_mac_core.o)
  "_CFStringGetCString", referenced from:
      _PaMacCore_GetChannelName in libportaudio.a(pa_mac_core.o)
  "_CFStringGetLength", referenced from:
      _PaMacCore_GetChannelName in libportaudio.a(pa_mac_core.o)
  "_CloseComponent", referenced from:
      _CloseStream in libportaudio.a(pa_mac_core.o)
      _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o)
  "_FindNextComponent", referenced from:
      _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o)
  "_Gestalt", referenced from:
      _PaMacCore_Initialize in libportaudio.a(pa_mac_core.o)
  "_OpenAComponent", referenced from:
      _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o)
  "___CFConstantStringClassReference", referenced from:
      CFString in libportaudio.a(pa_mac_core.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我的印象是我没有正确链接事物。有什么建议吗?

最佳答案

您需要包含 Apple 框架:

  • CoreServices.framework
  • CoreFoundation.framework
  • AudioUnit.framework
  • AudioToolbox.framework
  • CoreAudio.framework

  • 就像你已经做了 libportaudio.a

    关于c - 尝试 portaudio 示例,但得到 "ld: symbol(s) not found for architecture x86_64",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28653678/

    相关文章:

    c++ - 使用某些静态库时在开罗出现段错误

    c - Mex无法正确链接,导致 "dyld: lazy symbol binding failed: Symbol not found: _mxGetNumberOfDimensions_700"

    python - 仅在一个 channel 上生成音频 pyaudio

    flash - Actionscript 3.0麦克风分贝

    c - 程序在将 int 转换为 double 时终止。无法弄清楚为什么会出现段错误

    C 从配置文件中读取值

    c - 修复段错误 : 11

    ruby-on-rails - Mac OS X 10.7.3 上的 Ruby on Rails 安装新增功能

    c++ - 新项目构建错误 - 没有更改代码

    audio - 插孔音频应用程序路由