我正在尝试在使用pjsip的 xcode 中制作一个 iphone 应用程序。问题是我不知道如何链接库。这是我第一次使用其他库,所以可能我做错了什么,我只是不知道是什么。:(
我在 mac os x 的这个文件夹中有 ARM 版本的库。/用户/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/pjnath/include /Users/kudorgyozo/pjsip_iphone/pjsip /包括
对于图书馆:
/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
然后使用“其他链接器标志”:
-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
这样可以吗?因为它给了我符号未找到的错误。我认为从“包含”库中找不到符号。我不知道出了什么问题我才刚刚开始了解在基于 linux 的系统下构建应用程序是如何工作的,我之前只在 C# 中进行过编程。
编辑:这是缺少的符号列表:
“_AudioSessionSetProperty”,引用自:
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)中的_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
“_srtp_deinit”,引用自:
libpjmedia-arm-apple-darwin9.a(transport_srtp.o) 中的 _pjmedia_srtp_deinit_lib
“_gsm_encode”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(gsm.o) 中的 _gsm_codec_encode
“_AudioComponentInstanceNew”,引用自:
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)中的_create_audio_unit
“_AudioSessionAddPropertyListener”,引用自:
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o) 中的 _ca_stream_start
“_speex_decoder_init”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _spx_codec_open
“_res_Resample”,引用自:
libpjmedia-arm-apple-darwin9.a(resample_resample.o) 中的 _pjmedia_resample_run
libpjmedia-arm-apple-darwin9.a(resample_resample.o) 中的 _pjmedia_resample_run
“_speex_bits_write”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _spx_codec_encode
“_gsm_destroy”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(gsm.o) 中的 _gsm_codec_close
libpjmedia-codec-arm-apple-darwin9.a(gsm.o) 中的 _gsm_codec_close
“_AudioComponentInstanceDispose”,引用自:
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o) 中的 _propListener
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o) 中的 _ca_stream_destroy
“_AudioSessionGetProperty”,引用自:
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) 中的 _ca_stream_get_cap
“_AudioComponentFindNext”,引用自:
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o) 中的 _ca_stream_set_cap
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o) 中的 _ca_factory_init
“_speex_encoder_ctl”,引用自:
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) 中的 _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) 中的 _spx_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
“_speex_encoder_init”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _get_speex_info
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _spx_codec_open
“_AudioSessionSetActive”,引用自:
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o) 中的 _ca_stream_stop
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o) 中的 _ca_stream_start
“_AudioUnitRender”,引用自:
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o) 中的 _input_callback
“_srtp_dealloc”,引用自:
libpjmedia-arm-apple-darwin9.a(transport_srtp.o) 中的 _pjmedia_transport_srtp_stop
libpjmedia-arm-apple-darwin9.a(transport_srtp.o) 中的 _pjmedia_transport_srtp_stop
_pjmedia_transport_srtp_start 在 libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
“_speex_lib_get_mode”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _pjmedia_codec_speex_init
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _pjmedia_codec_speex_init
“_res_SrcLinear”,引用自:
libpjmedia-arm-apple-darwin9.a(resample_resample.o) 中的 _pjmedia_resample_run
libpjmedia-arm-apple-darwin9.a(resample_resample.o) 中的 _pjmedia_resample_run
“_srtp_init”,引用自:
libpjmedia-arm-apple-darwin9.a(transport_srtp.o) 中的 _pjmedia_srtp_init_lib
“_speex_bits_init”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _spx_codec_open
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _spx_codec_open
“_AudioUnitSetProperty”,引用自:
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)中的_create_audio_unit
“_AudioUnitUninitialize”,引用自:
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o) 中的 _propListener
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o) 中的 _ca_stream_destroy
“_speex_decoder_destroy”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _spx_codec_close
“_AudioUnitInitialize”,引用自:
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)中的_create_audio_unit
“_speex_bits_reset”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _spx_codec_encode
“_AudioOutputUnitStop”,引用自:
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o) 中的 _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) 中的 _interruptionListener
“_srtp_protect_rtcp”,引用自:
libpjmedia-arm-apple-darwin9.a(transport_srtp.o) 中的 _transport_send_rtcp2
“_speex_decode_int”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _spx_codec_recover
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _spx_codec_decode
“_speex_encoder_destroy”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _get_speex_info
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _spx_codec_close
“_gsm_create”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(gsm.o) 中的 _gsm_codec_open
libpjmedia-codec-arm-apple-darwin9.a(gsm.o) 中的 _gsm_codec_open
“_crypto_get_random”,引用自:
libpjmedia-arm-apple-darwin9.a(transport_srtp.o) 中的 _generate_crypto_attr_value
“_speex_bits_unpack_unsigned”,引用自:
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-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-darwin9.a(speex_codec.o) 中的 _speex_get_next_frame
“_speex_encode_int”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _spx_codec_encode
“_octet_string_hex_string”,引用自:
_pjmedia_transport_srtp_start 在 libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
_pjmedia_transport_srtp_start 在 libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
“_AudioSessionInitialize”,引用自:
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o) 中的 _ca_factory_init
“_speex_bits_read_from”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _spx_codec_parse
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _spx_codec_decode
“_speex_nb_mode”,引用自:
_speex_nb_mode$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”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(gsm.o) 中的 _gsm_codec_decode
“_speex_mode_query”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _speex_get_next_frame
“_speex_bits_advance”,引用自:
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-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-darwin9.a(speex_codec.o) 中的 _spx_codec_decode
“_AudioComponentGetDescription”,引用自:
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o) 中的 _ca_stream_get_cap
“_srtp_create”,引用自:
_pjmedia_transport_srtp_start 在 libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
_pjmedia_transport_srtp_start 在 libpjmedia-arm-apple-darwin9.a(transport_srtp.o)
“_speex_bits_remaining”,引用自:
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-darwin9.a(speex_codec.o) 中的 _speex_get_next_frame
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _speex_get_next_frame
“_srtp_unprotect_rtcp”,引用自:
libpjmedia-arm-apple-darwin9.a(transport_srtp.o) 中的 _srtp_rtcp_cb
“_AudioOutputUnitStart”,引用自:
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o) 中的 _ca_stream_start
“_AudioSessionRemovePropertyListenerWithUserData”,引用自:
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o) 中的 _ca_stream_destroy
“_speex_decoder_ctl”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _spx_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
“_speex_bits_nbytes”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _spx_codec_encode
“_srtp_protect”,引用自:
libpjmedia-arm-apple-darwin9.a(transport_srtp.o)中的_transport_send_rtp
“_speex_bits_destroy”,引用自:
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _spx_codec_close
libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o) 中的 _spx_codec_close
“_srtp_unprotect”,引用自:
libpjmedia-arm-apple-darwin9.a(transport_srtp.o) 中的 _srtp_rtp_cb
libpjmedia-arm-apple-darwin9.a(transport_srtp.o) 中的 _srtp_rtp_cb
有人为 iphone 构建了 pjsip 并使用它创建了一个新项目吗?