Добавление библиотек в проект в 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.