我正在尝试在使用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 并使用它创建了一个新项目吗?