Undefined symbol when linking binary in xcode, using cpal

I'm building a project with redbadger/crux, my project uses cpal for audio. Since the introduction of cpal I'm getting following error in xcode build

Undefined symbols for architecture x86_64:
  "_AudioComponentFindNext", referenced from:
      coreaudio::audio_unit::AudioUnit::new_with_flags::hfb13d16b7ec393f6 in libapp_core_static.a(cpal-60d6b893008576e6.cpal.6293b039faa40f37-cgu.0.rcgu.o)
      cpal::host::coreaudio::ios::default_output_asbd::hbdd53ef01b01538f in libapp_core_static.a(cpal-60d6b893008576e6.cpal.6293b039faa40f37-cgu.2.rcgu.o)
      cpal::host::coreaudio::ios::default_input_asbd::hd39caed3e4ce0056 in libapp_core_static.a(cpal-60d6b893008576e6.cpal.6293b039faa40f37-cgu.2.rcgu.o)
  "_AudioComponentInstanceDispose", referenced from:
      _$LT$coreaudio..audio_unit..AudioUnit$u20$as$u20$core..ops..drop..Drop$GT$::drop::hb2e5d580d04a374d in libapp_core_static.a(coreaudio-b831d889d2385196.coreaudio.db83184b20ae11c8-cgu.1.rcgu.o)
  "_AudioComponentInstanceNew", referenced from:
      coreaudio::audio_unit::AudioUnit::new_with_flags::hfb13d16b7ec393f6 in libapp_core_static.a(cpal-60d6b893008576e6.cpal.6293b039faa40f37-cgu.0.rcgu.o)
      cpal::host::coreaudio::ios::default_output_asbd::hbdd53ef01b01538f in libapp_core_static.a(cpal-60d6b893008576e6.cpal.6293b039faa40f37-cgu.2.rcgu.o)
      cpal::host::coreaudio::ios::default_input_asbd::hd39caed3e4ce0056 in libapp_core_static.a(cpal-60d6b893008576e6.cpal.6293b039faa40f37-cgu.2.rcgu.o)
  "_AudioOutputUnitStart", referenced from:
      coreaudio::audio_unit::AudioUnit::start::he44fd912a2c57cc1 in libapp_core_static.a(coreaudio-b831d889d2385196.coreaudio.db83184b20ae11c8-cgu.1.rcgu.o)
  "_AudioOutputUnitStop", referenced from:
      coreaudio::audio_unit::AudioUnit::stop::h61345c1e189efaca in libapp_core_static.a(coreaudio-b831d889d2385196.coreaudio.db83184b20ae11c8-cgu.1.rcgu.o)
      _$LT$coreaudio..audio_unit..AudioUnit$u20$as$u20$core..ops..drop..Drop$GT$::drop::hb2e5d580d04a374d in libapp_core_static.a(coreaudio-b831d889d2385196.coreaudio.db83184b20ae11c8-cgu.1.rcgu.o)
  "_AudioSessionGetProperty", referenced from:
      coreaudio::audio_unit::render_callback::_$LT$impl$u20$coreaudio..audio_unit..AudioUnit$GT$::set_input_callback::hbae92489ae3a632a in libapp_core_static.a(au_core.au_core.13a31f6b203b7c0c-cgu.08.rcgu.o)
  "_AudioUnitGetProperty", referenced from:
      _$LT$cpal..host..coreaudio..ios..Device$u20$as$u20$cpal..traits..DeviceTrait$GT$::build_output_stream_raw::hbca0bb2712697317 in libapp_core_static.a(au_core.au_core.13a31f6b203b7c0c-cgu.08.rcgu.o)
      coreaudio::audio_unit::render_callback::_$LT$impl$u20$coreaudio..audio_unit..AudioUnit$GT$::set_input_callback::hbae92489ae3a632a in libapp_core_static.a(au_core.au_core.13a31f6b203b7c0c-cgu.08.rcgu.o)
      coreaudio::audio_unit::render_callback::_$LT$impl$u20$coreaudio..audio_unit..AudioUnit$GT$::set_input_callback::_$u7b$$u7b$closure$u7d$$u7d$::hda3338d4ef5319f5 in libapp_core_static.a(au_core.au_core.13a31f6b203b7c0c-cgu.08.rcgu.o)
      cpal::host::coreaudio::ios::default_output_asbd::hbdd53ef01b01538f in libapp_core_static.a(cpal-60d6b893008576e6.cpal.6293b039faa40f37-cgu.2.rcgu.o)
      cpal::host::coreaudio::ios::default_input_asbd::hd39caed3e4ce0056 in libapp_core_static.a(cpal-60d6b893008576e6.cpal.6293b039faa40f37-cgu.2.rcgu.o)
  "_AudioUnitInitialize", referenced from:
      coreaudio::audio_unit::AudioUnit::new_with_flags::hfb13d16b7ec393f6 in libapp_core_static.a(cpal-60d6b893008576e6.cpal.6293b039faa40f37-cgu.0.rcgu.o)
      coreaudio::audio_unit::AudioUnit::initialize::h29e82b893756cd1b in libapp_core_static.a(coreaudio-b831d889d2385196.coreaudio.db83184b20ae11c8-cgu.1.rcgu.o)
      cpal::host::coreaudio::ios::default_output_asbd::hbdd53ef01b01538f in libapp_core_static.a(cpal-60d6b893008576e6.cpal.6293b039faa40f37-cgu.2.rcgu.o)
      cpal::host::coreaudio::ios::default_input_asbd::hd39caed3e4ce0056 in libapp_core_static.a(cpal-60d6b893008576e6.cpal.6293b039faa40f37-cgu.2.rcgu.o)
  "_AudioUnitRender", referenced from:
      coreaudio::audio_unit::render_callback::_$LT$impl$u20$coreaudio..audio_unit..AudioUnit$GT$::set_input_callback::_$u7b$$u7b$closure$u7d$$u7d$::hda3338d4ef5319f5 in libapp_core_static.a(au_core.au_core.13a31f6b203b7c0c-cgu.08.rcgu.o)
  "_AudioUnitSetProperty", referenced from:
      _$LT$cpal..host..coreaudio..ios..Device$u20$as$u20$cpal..traits..DeviceTrait$GT$::build_input_stream_raw::h03705b9a114adb47 in libapp_core_static.a(au_core.au_core.13a31f6b203b7c0c-cgu.08.rcgu.o)
      _$LT$cpal..host..coreaudio..ios..Device$u20$as$u20$cpal..traits..DeviceTrait$GT$::build_output_stream_raw::hbca0bb2712697317 in libapp_core_static.a(au_core.au_core.13a31f6b203b7c0c-cgu.08.rcgu.o)
      coreaudio::audio_unit::render_callback::_$LT$impl$u20$coreaudio..audio_unit..AudioUnit$GT$::set_input_callback::hbae92489ae3a632a in libapp_core_static.a(au_core.au_core.13a31f6b203b7c0c-cgu.08.rcgu.o)
      cpal::host::coreaudio::ios::configure_for_recording::h71ea619c8a748a24 in libapp_core_static.a(cpal-60d6b893008576e6.cpal.6293b039faa40f37-cgu.2.rcgu.o)
      cpal::host::coreaudio::ios::default_input_asbd::hd39caed3e4ce0056 in libapp_core_static.a(cpal-60d6b893008576e6.cpal.6293b039faa40f37-cgu.2.rcgu.o)
  "_AudioUnitUninitialize", referenced from:
      coreaudio::audio_unit::AudioUnit::uninitialize::h7c9a42bd1a4fcfa2 in libapp_core_static.a(coreaudio-b831d889d2385196.coreaudio.db83184b20ae11c8-cgu.1.rcgu.o)
      _$LT$coreaudio..audio_unit..AudioUnit$u20$as$u20$core..ops..drop..Drop$GT$::drop::hb2e5d580d04a374d in libapp_core_static.a(coreaudio-b831d889d2385196.coreaudio.db83184b20ae11c8-cgu.1.rcgu.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Crux may be missing some linker flags. Try compile your staticlib with cargo rustc -- --print native-static-libs and then pass all linker flags rustc will mention when linking the staticlib. One of these will be linking against CoreAudio.

1 Like

Opened Pass correct linker flags when linking a staticlib (#22) · Issues · Kornel / cargo-xcode · GitLab to suggest automating this.

1 Like

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.