如何在iOS应用程序中手动包含动态库
我有一个iOS应用程序(不是用xcode制作的),我需要在其中包含一个动态库。我的计算机上有这个库:如何在iOS应用程序中手动包含动态库,ios,dynamic-linking,dynamic-library,rpath,otool,Ios,Dynamic Linking,Dynamic Library,Rpath,Otool,我有一个iOS应用程序(不是用xcode制作的),我需要在其中包含一个动态库。我的计算机上有这个库: \webrtc \WebRTC.framework \Headers \*.h \Modules \module.modulemap \WebRTC \Info.plist 我在我的应用程序中部署这些文件,如下所示: ALLiveVideoChatClient.app
\webrtc
\WebRTC.framework
\Headers
\*.h
\Modules
\module.modulemap
\WebRTC
\Info.plist
我在我的应用程序中部署这些文件,如下所示:
ALLiveVideoChatClient.app
\Frameworks
\WebRTC.framework
\Headers
\*.h
\Modules
\module.modulemap
\WebRTC
\Info.plist
当我这样做的时候
otool-L ALLiveVideoChatClient.app/ALLiveVideoChatClient
这是给我的回报:
@rpath/WebRTC.framework/WebRTC(兼容版本0.0.0,当前版本0.0.0)
当我尝试运行我的应用程序时,我收到错误:
异常类型:EXC_崩溃(SIGABRT)异常代码:
0x0000000000000000,0x0000000000000000异常注意:
EXC_尸体_通知终止说明:DYLD,未加载库:
@rpath/WebRTC.framework/WebRTC |引用自:
/var/containers/Bundle/Application/A2C3A7DA-D35E-4649-AEA0-9AB518E48971/ALLiveVideoChatClient.app/ALLiveVideoChatClient
|原因:未找到图像由线程0触发
所以我检查@rpath doing的值
otool -l ALLiveVideoChatClient.app/ALLiveVideoChatClient
它还我
cmd LC_RPATH
cmdsize 32
path $ORIGIN (offset 12)
我不确定$ORIGIN
是什么意思,但它指向ALLiveVideoChatClient.app
,所以我更新@rpath指向$ORIGIN/Frameworks
将-rpath$ORIGIN/Frameworks
添加到链接器()中,但我仍然收到错误未找到图像
我做错了什么?手动向iOS应用程序添加(因此不使用xcode)动态库的步骤是什么?WebRTC.framework是一个嵌入式框架,您需要将它嵌入到应用程序中。如果没有,您将得到上述错误 若要嵌入,请转到“生成设置”。您将找到一个关于“嵌入框架”的部分。点击+图标。它将显示应用程序中包含的框架列表,选择WebRTC框架。这里有更多细节 另一方面,我发现谷歌决定从WebRTC中删除静态库目标是荒谬的。我们修改了build.gn(s)以生成静态库并使用它。如果你需要,我可以和你分享