gpt4 book ai didi

objective-c - 在Xcode中将库添加到项目-找不到符号

转载 作者:行者123 更新时间:2023-12-04 10:58:23 25 4
gpt4 key购买 nike

我正在尝试在使用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 / pjnath / include /包括

对于图书馆:

/ 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 / pjip-iphone / pjnath / lib / 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-简单-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中的_pjmedia_srtp_deinit_lib(transport_srtp.o)
“ _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”:
_ca_stream_start在libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)中
“ _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”,引用自:
_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”,引用自:
libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)中的_input_callback
“ _srtp_dealloc”,引用自:
libpjmedia-arm-apple-darwin9.a中的_pjmedia_transport_srtp_stop(transport_srtp.o)
libpjmedia-arm-apple-darwin9.a中的_pjmedia_transport_srtp_stop(transport_srtp.o)
libpjmedia-arm-apple-darwin9.a中的_pjmedia_transport_srtp_start(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”,引用自:
_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)中
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”,引用自:
_spx_codec_recover在libpjmedia-codec-arm-apple-darwin9.a(speex_codec.o)中
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”,引用自:
libpjmedia-arm-apple-darwin9.a中的_pjmedia_transport_srtp_start(transport_srtp.o)
libpjmedia-arm-apple-darwin9.a中的_pjmedia_transport_srtp_start(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”,引用自:
libpjmedia-arm-apple-darwin9.a中的_pjmedia_transport_srtp_start(transport_srtp.o)
libpjmedia-arm-apple-darwin9.a中的_pjmedia_transport_srtp_start(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”,引用自:
_ca_stream_start在libpjmedia-audiodev-arm-apple-darwin9.a(coreaudio_dev.o)中
从以下位置引用的“ _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并使用它创建了一个新项目?

最佳答案

似乎您(至少)缺少一些库。从符号中,我会说:


您可能忘了添加CoreAudio框架。需要解析AudioUnitRender之类的符号
应该有一个来自pjsip的RTP库,其中包含pjrtp。如果有一个,则将其添加到其他链接标志。这将修复_srtp_XXX丢失的符号。
应该有一个来自pjsip的GSM库,其中包含gsm。如果有一个,则将其添加到其他链接标志。这将修复_srtp_XXX丢失的符号。
应该有一个来自pjsip的Speex库,其中包含speex。如果有一个,则将其添加到其他链接标志。这将修复_srtp_XXX丢失的符号。


遇到丢失的符号时,找到它们在哪里的最好方法是:


查看符号名称。好的库总是在它们的符号前加上前缀,因此您可以从名称中猜测哪个库包含它。
如果您有一个静态库,并且想知道导出的符号,则可以使用otool -Sv mystaticlib.a命令。它将显示静态库的目录。

关于objective-c - 在Xcode中将库添加到项目-找不到符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2949494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com