I am trying to make an iphone app in xcode that uses pjsip. The problem is I don't know how to link the libraries. This is the first time i am using other libraries so probably i am doing something wrong i just don't know what. :(
I have the ARM version of the libraries in this folder in mac os x. /Users/kudorgyozo/pjsip_iphone
In Xcode: I have specified the library and header search paths like this:
for includes:
/Users/kudorgyozo/pjsip_iphone/pjlib/include /Users/kudorgyozo/pjsip_iphone/pjlib-util/include /Users/kudorgyozo/pjsip_iphone/pjmedia/include /Users/kudorgyozo/pjsip_iphone/pjnath/include /Users/kudorgyozo/pjsip_iphone/pjsip/include
for libraries:
/Users/kudorgyozo/pjsip_iphone/pjlib/lib /Users/kudorgyozo/pjsip_iphone/pjlib-util/lib /Users/kudorgyozo/pjsip_iphone/pjmedia/lib /Users/kudorgyozo/pjsip_iphone/pjnath/lib /Users/kudorgyozo/pjsip_iphone/pjsip/lib
and then using the "Other linker flags" :
-lpj-arm-apple-darwin9 -lpjlib-util-arm-apple-darwin9 -lpjmedia-arm-apple-darwin9 -lpjmedia-audiodev-arm-apple-darwin9 -lpjmedia-codec-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
Is this OK like this? Because it gives me symbol(s) not found errors. I think no symbol is found from the "included" libraries. I don't know what is wrong i'm just beginning to understand how building an app works under linux based systems i've only done programming in C# before.
EDIT: Here is a list of symbols missing:
"_AudioSessionSetProperty", referenced from:
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_set_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_set_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_srtp_deinit", referenced from:
_pjmedia_srtp_deinit_lib in libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
"_gsm_encode", referenced from:
_gsm_codec_encode in libpjmedia-codec-arm-apple-darwin9.a(gsm.o)
"_AudioComponentInstanceNew", referenced from:
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioSessionAddPropertyListener", referenced from:
_ca_stream_start in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_speex_decoder_init", referenced from:
_spx_codec_open in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_res_Resample", referenced from:
_pjmedia_resample_run in libpjmedia-arm-apple-darwin9.a(resample_resample.o)
_pjmedia_resample_run in libpjmedia-arm-apple-darwin9.a(resample_resample.o)
"_speex_bits_write", referenced from:
_spx_codec_encode in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_gsm_destroy", referenced from:
_gsm_codec_close in libpjmedia-codec-arm-apple-darwin9.a(gsm.o)
_gsm_codec_close in libpjmedia-codec-arm-apple-darwin9.a(gsm.o)
"_AudioComponentInstanceDispose", referenced from:
_propListener in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_destroy in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioSessionGetProperty", referenced from:
_ca_stream_get_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_get_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_get_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_get_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_get_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_get_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_get_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioComponentFindNext", referenced from:
_ca_stream_set_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_factory_init in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_speex_encoder_ctl", referenced from:
_get_speex_info in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_get_speex_info in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_get_speex_info in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_get_speex_info in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_get_speex_info in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_get_speex_info in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_get_speex_info in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_get_speex_info in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_spx_codec_modify in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_spx_codec_modify in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_spx_codec_open in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_spx_codec_open in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_spx_codec_open in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_spx_codec_open in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_spx_codec_open in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_speex_encoder_init", referenced from:
_get_speex_info in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_spx_codec_open in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_AudioSessionSetActive", referenced from:
_ca_stream_stop in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_start in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioUnitRender", referenced from:
_input_callback in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_srtp_dealloc", referenced from:
_pjmedia_transport_srtp_stop in libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
_pjmedia_transport_srtp_stop in libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
_pjmedia_transport_srtp_start in libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
"_speex_lib_get_mode", referenced from:
_pjmedia_codec_speex_init in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_pjmedia_codec_speex_init in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_res_SrcLinear", referenced from:
_pjmedia_resample_run in libpjmedia-arm-apple-darwin9.a(resample_resample.o)
_pjmedia_resample_run in libpjmedia-arm-apple-darwin9.a(resample_resample.o)
"_srtp_init", referenced from:
_pjmedia_srtp_init_lib in libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
"_speex_bits_init", referenced from:
_spx_codec_open in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_spx_codec_open in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_AudioUnitSetProperty", referenced from:
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioUnitUninitialize", referenced from:
_propListener in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_destroy in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_speex_decoder_destroy", referenced from:
_spx_codec_close in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_AudioUnitInitialize", referenced from:
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_speex_bits_reset", referenced from:
_spx_codec_encode in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_AudioOutputUnitStop", referenced from:
_ca_stream_stop in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_stop in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_start in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_interruptionListener in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_srtp_protect_rtcp", referenced from:
_transport_send_rtcp2 in libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
"_speex_decode_int", referenced from:
_spx_codec_recover in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_spx_codec_decode in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_speex_encoder_destroy", referenced from:
_get_speex_info in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_spx_codec_close in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_gsm_create", referenced from:
_gsm_codec_open in libpjmedia-codec-arm-apple-darwin9.a(gsm.o)
_gsm_codec_open in libpjmedia-codec-arm-apple-darwin9.a(gsm.o)
"_crypto_get_random", referenced from:
_generate_crypto_attr_value in libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
"_speex_bits_unpack_unsigned", referenced from:
_speex_get_next_frame in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_speex_get_next_frame in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_speex_get_next_frame in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_speex_get_next_frame in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_speex_get_next_frame in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_speex_encode_int", referenced from:
_spx_codec_encode in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_octet_string_hex_string", referenced from:
_pjmedia_transport_srtp_start in libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
_pjmedia_transport_srtp_start in libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
"_AudioSessionInitialize", referenced from:
_ca_factory_init in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_speex_bits_read_from", referenced from:
_spx_codec_parse in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_spx_codec_decode in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_speex_nb_mode", referenced from:
_speex_nb_mode$non_lazy_ptr in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_res_GetXOFF", referenced from:
_pjmedia_resample_create in libpjmedia-arm-apple-darwin9.a(resample_resample.o)
"_gsm_decode", referenced from:
_gsm_codec_decode in libpjmedia-codec-arm-apple-darwin9.a(gsm.o)
"_speex_mode_query", referenced from:
_speex_get_next_frame in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_speex_bits_advance", referenced from:
_speex_get_next_frame in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_speex_get_next_frame in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_speex_get_next_frame in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_speex_get_next_frame in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_spx_codec_decode in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_AudioComponentGetDescription", referenced from:
_ca_stream_get_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_srtp_create", referenced from:
_pjmedia_transport_srtp_start in libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
_pjmedia_transport_srtp_start in libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
"_speex_bits_remaining", referenced from:
_speex_get_next_frame in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_speex_get_next_frame in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_speex_get_next_frame in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_speex_get_next_frame in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_srtp_unprotect_rtcp", referenced from:
_srtp_rtcp_cb in libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
"_AudioOutputUnitStart", referenced from:
_ca_stream_start in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioSessionRemovePropertyListenerWithUserData", referenced from:
_ca_stream_destroy in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_speex_decoder_ctl", referenced from:
_spx_codec_modify in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_spx_codec_open in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_spx_codec_open in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_speex_bits_nbytes", referenced from:
_spx_codec_encode in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_srtp_protect", referenced from:
_transport_send_rtp in libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
"_speex_bits_destroy", referenced from:
_spx_codec_close in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
_spx_codec_close in libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)
"_srtp_unprotect", referenced from:
_srtp_rtp_cb in libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
_srtp_rtp_cb in libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
Did anybody build pjsip for iphone and created a new project using it?
It seems that you are missing (at least) some libraries. From the symbols, I would say that:
AudioUnitRender
pjrtp. If there is one, then add it to the Other Link Flags. That will fix the _srtp_XXX missing symbols. gsm. If there is one, then add it to the Other Link Flags. That will fix the _srtp_XXX missing symbols. speex. If there is one, then add it to the Other Link Flags. That will fix the _srtp_XXX missing symbols. When encountering missing symbols, the best way to find where they are is:
otool -Sv mystaticlib.a command. It will displays the table of content for the static library.It seems I was stupid and didn't observe a folder called third-party. There are the missing libraries. In the docs theye were NOT mentioned so I didn't even bother looking in the other folders. I still have missing symbols but fewer (I think). I also included CoreAudio, I don't think it helped. I modified my project:
Added to the other linker flags:
-lg7221codec-arm-apple-darwin9 -lgsmcodec-arm-apple-darwin9 -lilbccodec-arm-apple-darwin9 -lmilenage-arm-apple-darwin9 -lresample-arm-apple-darwin9 -lspeex-arm-apple-darwin9 -lsrtp-arm-apple-darwin9
And to the library search paths:
/Users/kudorgyozo/pjsip_iphone/third_party/lib
I don't have to modify the header search path's or include new headers i THINK.
Here's what is missing now:
"_AudioSessionSetProperty", referenced from:
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_set_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_set_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioComponentInstanceNew", referenced from:
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioSessionAddPropertyListener", referenced from:
_ca_stream_start in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioComponentInstanceDispose", referenced from:
_propListener in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_destroy in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioSessionGetProperty", referenced from:
_ca_stream_get_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_get_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_get_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_get_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_get_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_get_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_get_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioComponentFindNext", referenced from:
_ca_stream_set_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_factory_init in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioSessionSetActive", referenced from:
_ca_stream_stop in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_start in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioUnitRender", referenced from:
_input_callback in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioUnitSetProperty", referenced from:
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioUnitUninitialize", referenced from:
_propListener in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_destroy in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioUnitInitialize", referenced from:
_create_audio_unit in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioOutputUnitStop", referenced from:
_ca_stream_stop in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_stop in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_ca_stream_start in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
_interruptionListener in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioSessionInitialize", referenced from:
_ca_factory_init in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioComponentGetDescription", referenced from:
_ca_stream_get_cap in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioOutputUnitStart", referenced from:
_ca_stream_start in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
"_AudioSessionRemovePropertyListenerWithUserData", referenced from:
_ca_stream_destroy in libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)
ld: symbol(s) not found
It seems to me all are from this file libpjmedia-audiodev-arm-apple-darwin9.a but i have included it in the linker flags an in the lib search paths.
I was able to build it successfully. The missing framework was AudioToolbox. Did a google search for AudioSessionSetProperty and that is how i found out. Thanks for help.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With