Добавление библиотек в проект в xcode - символы не найдены

Я пытаюсь сделать приложение для iphone в xcode, которое использует pjsip. Проблема в том, что я не знаю, как связать библиотеки. Это первый раз, когда я использую другие библиотеки, поэтому, вероятно, я делаю что-то не так, я просто не знаю, что.:(

У меня есть версия ARM библиотек в этой папке в Mac OS X. /Users/kudorgyozo/pjsip_iphone

В XCode: я указал библиотеку и пути поиска заголовка, как это:

для включает в себя:

/ Users /kudorgyozo/pjsip_iphone/pjlib / include / Users /kudorgyozo/pjsip_iphone/pjlib-util / include / Users /kudorgyozo/pjsip_iphone/pjmedia / include / Users /kudorgyozo/pjsip_iphone/pjip_pjys_pjsys/pjsys/pjsys/pjs Users / /включают

для библиотек:

/ Users /kudorgyozo/pjsip_iphone/pjlib / lib / Users /kudorgyozo/pjsip_iphone/pjlib-util / lib / Users /kudorgyozo/pjsip_iphone/pjmedia / lib / Пользователи /kudorgyozo/pjsip_iphone/pjipjp_pys_pjs Users / pjip_jpg Users / pjip_jpg пользователи pjiphys / Lib

а затем с помощью "Другие флаги компоновщика":

-lpj-arm-apple-darwin9 -lpjlib-util-arm-apple-darwin9 -lpjmedia-arm-apple-darwin9 -lpjmedia-audiodev-arm-apple-darwin9 -lpjmedia-кодек-arm-apple-darwin9 -lpjsdp-arm-apple-darwin9 -lpjnath-arm-apple-darwin9 -lpjsip-arm-apple-darwin9 -lpjsip-simple-arm-apple-darwin9 -lpjsip-ua-arm-apple-darwin9 -lpjsua-arm-apple-darwin9

Это нормально, как это? Потому что это дает мне символ (ы) не найдены ошибки. Я думаю, что ни один символ не найден в "включенных" библиотеках. Я не знаю, что не так, я только начинаю понимать, как работает создание приложений в системах на основе Linux, раньше я занимался программированием только на C#.

РЕДАКТИРОВАТЬ: Вот список пропавших без вести символов:

"_AudioSessionSetProperty", на который ссылаются:
      _create_audio_unit в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_set_cap в libpjmedia-audiodev-arm-apple-darwin9.a (coreaudio_dev.o_cap-inset_name_name_set) -apple-darwin9.a(coreaudio_dev.o)
  "_srtp_deinit", на который ссылается:
      _pjmedia_srtp_deinit_lib в libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
  "_gsm_encode", на который ссылается код яблока:
      _gsm_ccode-_-code-код-код_команды_компонентного кода: -darwin9.a(gsm.o)
  "_AudioComponentInstanceNew", на который ссылаются из:
      _create_audio_unit в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioSessionAddPropertyListener", ссылка на источник_ссылки-яблока-в-медиапространстве: -______ -darwin9.a(coreaudio_dev.o)
  "_speex_decoder_init", на который ссылается:
      _spx_codec_open в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
  "_res_Resample", на который ссылаются:
      _pjmedia_resample_run в libpmedia-dar9 в libp.a(resample_resample.o)
      _pjmedia_resample_run в libpjmedia-arm-apple-darwin9.a(resample_resample.o)
  "_speex_bits_write", на который ссылается:
      _spx_codec_encode в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
  "_gsm_destroy", на который ссылаются:
      _gsm_codep_media codec-arm-apple-darwin9.a(gsm.o)
      _gsm_codec_close в libpjmedia-codec-arm-apple-darwin9.a(gsm.o)
  "_AudioComponentInstanceDispose", на который ссылается:
      _propListener в libpjmedia-audiodev-arm-apple-dar9.a(coreaudio_dev.o)
      _ca_stream_destroy в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioSessionGetProperty", на который ссылается:
      _ca_stream_get_cap в libpjmedia-audiodev-arm-apple-darwin9.a (coreaudio_)
      _ca_stream_get_cap в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_get_cap в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_get_cap в libpjmedia-audiodev-arm-apple-dar coreaudio_dev.o)
      _ca_stream_get_cap в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_get_cap в libpjmedia-audiode v-arm-apple-darwin9.a (coreaudio_dev.o)
      _ca_stream_get_cap в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioComponentFindNext", по ссылке:
      _ca_stream_set_c_ap в libpjmedia-audio-dar -9-win -9.a(coreaudio_dev.o)
      _ca_factory_init в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_speex_encoder_ctl", на который ссылается:
      _get_speex_info в libpjmedia-codec-arm-apple-darwin9.a (speex_code)
      _get_speex_info в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _get_speex_info в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _get_speex_info в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _get_speex_info в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _get_speex_info в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _get_speex_info в libpjmedia-codec-arm-apple- darwin9.a (speex_codec.o)
      _get_speex_info в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _spx_codec_modify в libpjmedia-codec-arm-apple-darwin9.a (speex_codec.o) _s px_codec_modify в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _spx_codec_open в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _spx_codec_open в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _spx_codec_open в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _spx_codec_open в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _spx_codec_open в libpjmedia-codec-arm-arm darwin9.a(speex_codec.o)
  "_speex_encoder_init", на который ссылается:
      _get_speex_info в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _spx_codec_open в libpjmedia-codec-arm-apple-darwin9.a (speex)
  "_AudioSessionSetActive", на который ссылаются:
      _ca_stream_stop в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_start в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioUrencedRender:
      _input_callback в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_srtp_dealloc", на который ссылается:
      _pjmedia_transport_srtp_stop в libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
      _pjmedia_transport_srtp_stop в libpjmedia-arm-apple-apple-darwin9.a(transport_srtp.o)
      _pjmedia_transport_srtp_start в libpjmedia-arm-apple-darwin9.a (______________t_) в libpjmedia-codec-arm-apple-darwin9.a (speex_codec.o) _pjmedia_codec_speex_init в libpjmedia-codec-arm-apple-darwin9.a (speex_codec.o) "_res_SrcLinear", на который ссылается:
      _pjmedia_resample_run в libpj darwin9.a(resample_resample.o)
      _pjmedia_resample_run в libpjmedia-arm-apple-darwin9.a (resample_resample.o) "_srtp_init", на который ссылается: _pjmedia_srtp_init_lib в libpjmedia-arm-apple-darwinr., ссылается из:
      _spx_codec_open в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _spx_codec_open в libpjmedia-codec-arm-apple-darwin9.a (speex_codec.o) -audiodev-arm-apple-darwin9.a (coreaudio_dev.o) _create_ audio_unit в libpjmedia-audiodev-arm-apple-darwin9.a (coreaudio_dev.o) _create_audio_unit в libpjmedia-audiodev-arm-apple-darwin9.a (coreaudio_dev.o) _create_audio_unit в libpjmedia-audiodev-arm-apple-darwina (coreaudio_dev.o) _create_audio_unit в libpjmedia-audiodev-arm-apple-darwin9.a (coreaudio_dev.o) _create_audio_unit в libpjmedia-audiodev-arm-apple-darwin9.a (coreaudio_dev.o) _create_audio_unit-arm -unit-arm -unit-in-arm в libpj darwin9.a (coreaudio_dev.o) "_AudioUnitUninitialize", на который ссылается:
      _propListener в libpjmedia-audiodev-arm-apple-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_destroy в libpjmedia-audiodev-arm-apple-darwin9.a (coreaudio)) "_speex_decoder_destroy", ссылка на которую: _spx_codec_close в libpjmedia-codec-arm-apple-darwin9.a (speex_codec.o)) "_speex_bits_reset", на который ссылается:
      _spx_codec_encode в libpjmedia-codec-arm-apple-darwin9.a (speex_c odec.o) "_AudioOutputUnitStop", на который ссылается:
      _ca_stream_stop в libpjmedia-audiodev-arm-apple-apple-darwin9.a (coreaudio_dev.o) _ca_stream_stop в libpjmedia-audiodev-arm-apple-darwin9.a (coreaudio_dev_st_in_media_p) _ca -audiodev-arm-apple-darwin9.a (coreaudio_dev.o) _interruptListener в libpjmedia-audiodev-arm-apple-darwin9.a (coreaudio_dev.o) "_srtp_protect_rtcp", по ссылке: _transport_send_rtcp2 в lib-j-dwar9 a (transport_srtp.o) "_speex_decode_int", на который ссылаются: _spx_codec_recover в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _spx_codec_decode в libpjmedia-codec-arm-apple-darwin9.a (speex_codec.o) _speex_encoder_destroy ", на который ссылаются:
      _get_speex_info в libpjmedia-codec-arm-apple-darwin9.a (speex_codec.o) _spx_codec_close в libpjmedia-codec-arm-apple-darwin9.a (speex_codec.o)" _gsm_create из _gsm_create: в libpjmedia-codec-arm-apple-darwin9.a(gsm.o)
      _gsm_codec_open в libpjmedia-codec-arm-apple-darwin9.a(gsm.o)
  "_crypto_get_random", на который ссылаются из:
      _generate_crypto_attr_value в libpjmedia-arm-apple-apple-darwin9.a(transport_srtp.o)
  "_speex_bits_unpack_unsigned", на который ссылаются из:
      _speex_get_ne_______re_f_me_me_me_me_name_f_me_me_name_f_me_f_me_name_in_id_f_ в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _speex_get_next_frame в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _speex_get_next_frame в libpjmedia-codec-arm-apple-darwinc (код) ссылка из: _pjmedia_transport_srtp_start в libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
      _pjmedia_transport_srtp_start в libpjmedia-arm-apple-darwin9.a (transport_srtp.o) apple-darwin9.a (coreaudio_dev.o) "_spe ex_bits_read_from ", на который ссылаются из: _spx_codec_parse в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _spx_codec_decode в libpjmedia-codec-arm-apple-darwin9.a (speex_codec.o)" _speex_nmo_mode__b_ $non_lazy_ptr в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
  "_res_GetXOFF", на который ссылается из:
      _pjmedia_resample_create в libpjmedia-arm-apple-darwin9.a(resample_resample.o)
  "_gsm_decode_codec_de_c_c_dec_dec_dec_dec_dec_dec_dec_dec_dec_dec_dec_dec_dec_dec_dec_dec_dec_d_c_d_de_c_d_c_d_c_d_c_d_c_d_c_d_c_. в libpjmedia-codec-arm-apple-darwin9.a(gsm.o)
  "_speex_mode_query", на который ссылается:
      _speex_get_next_frame, в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
  "_speex_bits_ad__get_ex_trade_ex_f_F_F_D_WR_S" в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _speex_get_next_frame в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _speex_get_next_frame в libpjmedia-codec-arm-apple-darwinc (код.o) _speex_get_next_frame в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
      _spx_codec_decode в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
  "_AudioComponentGetDescription", на который ссылаются из:
      _ca_stream_get_cap в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_srtp_create_t_t_t_p_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t__" libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
      _pjmedia_transport_srtp_start в libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
  "_speex_bits_remaining", на который ссылается:
      _speex_get_nep_a-code-in-media-code. -darwin9.a(speex_codec.o)
  "_srtp_unprotect_rtcp", на который ссылаются из:
      _srtp_rtcp_cb в libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
  "_AudioOutputUnitStart.a(coreaudio_dev.o)
  "_AudioSessionRemovePropertyListenerWithUserData", r ссылается на:
      _ca_stream_destroy в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_speex_decoder_ctl", на который ссылается:
      _spx_codec_modify в libpjmedia-codec-arm-apple-darwin9.a (speex_codec.j_enop_p_s_p) _media xp codec-arm-apple-darwin9.a (speex_codec.o) _spx_codec_open в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
  "_speex_bits_nbytes", на который ссылается:
      _spx_codec_encode в libpjmedia-codec-arm-apple-dar, (speex_codec.o) _spx_codec_close в libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
  "_srtp_unprotect", на который ссылаются: _srtp_rtp_cb в libpjmedia-arm-apple-darwin9.a (transport_srpp.ptp. рука-яблочно-darwin9.a (transport_srtp.o)

Кто-нибудь собирал pjsip для iphone и создал новый проект, используя его?

3 ответа

Решение

Кажется, вам не хватает (по крайней мере) некоторых библиотек. Из символов я бы сказал, что:

  • Возможно, вы забыли добавить каркас CoreAudio. Это необходимо для разрешения символов, таких как AudioUnitRender
  • Должна быть библиотека RTP от pjsip, которая содержит pjrtp, Если он есть, добавьте его в флажки Другие ссылки. Это исправит _srtp_XXX недостающие символы.
  • Должна быть библиотека GSM от pjsip, которая содержит gsm, Если он есть, добавьте его в флажки Другие ссылки. Это исправит _srtp_XXX недостающие символы.
  • Должна быть библиотека Speex от pjsip, которая содержит speex, Если он есть, добавьте его в флажки Другие ссылки. Это исправит _srtp_XXX недостающие символы.

При обнаружении пропущенных символов лучший способ узнать, где они находятся:

  • Посмотрите на название символа. Хорошие библиотеки всегда имеют префикс своих символов, поэтому по названию вы можете догадаться, какая библиотека его содержит.
  • Если у вас есть набор статических библиотек, и вы хотите знать экспортированные символы, то вы можете использовать otool -Sv mystaticlib.a команда. Будет отображено содержание для статической библиотеки.

Кажется, я был глуп и не наблюдал за папкой, называемой сторонней. Есть недостающие библиотеки. В документах они НЕ упоминались, поэтому я даже не стал заглядывать в другие папки. У меня все еще есть недостающие символы, но меньше (я думаю). Я также включил CoreAudio, я не думаю, что это помогло. Я изменил свой проект:

Добавлены другие флаги компоновщика:

-lg7221-arm-apple-darwin9 -lgsmcodec-arm-apple-darwin9 -lilbccodec-arm-apple-darwin9 -lmilenage-arm-apple-darwin9 -образец-рука-яблоко-дарвин9 -lspeex-рука-яблоко-дарвин9 -lsrtp-arm-яблочно-darwin9

И к путям поиска библиотеки:

/ Пользователи /kudorgyozo/pjsip_iphone/ THIRD_PARTY / Lib

Мне не нужно изменять пути поиска заголовка или включать новые заголовки, я думаю.

Вот чего сейчас не хватает:

  "_AudioSessionSetProperty", на который ссылаются из:
      _create_audio_unit в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_set_cap в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_set_cap в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioComponentInstanceNew", по ссылке от:
      _create_audio_unit в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioSessionAddPropertyListener", на который ссылаются из:
      _ca_stream_start в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioComponentInstanceDispose", на который ссылаются из:
      _propListener в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_destroy в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioSessionGetProperty", на который ссылаются из:
      _ca_stream_get_cap в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_get_cap в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_get_cap в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_get_cap в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_get_cap в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_get_cap в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_get_cap в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioComponentFindNext", на который ссылаются из:
      _ca_stream_set_cap в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_factory_init в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioSessionSetActive", на который ссылаются из:
      _ca_stream_stop в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_start в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioUnitRender", на который ссылаются:
      _input_callback в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioUnitSetProperty", на который ссылаются из:
      _create_audio_unit в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _create_audio_unit в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _create_audio_unit в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _create_audio_unit в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _create_audio_unit в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _create_audio_unit в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _create_audio_unit в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioUnitUninitialize", на который ссылаются:
      _propListener в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_destroy в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioUnitInitialize", по ссылке из:
      _create_audio_unit в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioOutputUnitStop", на который ссылаются из:
      _ca_stream_stop в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_stop в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _ca_stream_start в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
      _interruptListener в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioSessionInitialize", на который ссылаются из:
      _ca_factory_init в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioComponentGetDescription", на которую ссылаются из:
      _ca_stream_get_cap в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioOutputUnitStart", по ссылке из:
      _ca_stream_start в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
  "_AudioSessionRemovePropertyListenerWithUserData", на которую ссылаются из:
      _ca_stream_destroy в libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
ld: символ (ы) не найден

Мне кажется, что все они из этого файла libpjmedia-audiodev-arm-apple-darwin9.a, но я включил его в флаги компоновщика и в пути поиска lib. Вот так это выглядит сейчас

РЕДАКТИРОВАТЬ: я смог построить его успешно. Отсутствующим фреймворком был AudioToolbox. Сделал поиск Google для AudioSessionSetProperty, и вот как я узнал. Спасибо за помощь.

Добавьте каждую статическую библиотеку в ваш проект xcode, который был собран во время сборки библиотек Pjsip. Затем добавьте все фреймворки, связанные с фреймворками Audio и Core.

Другие вопросы по тегам