为啥有些库需要嵌入而有些则不需要?
Posted
技术标签:
【中文标题】为啥有些库需要嵌入而有些则不需要?【英文标题】:Why some libraries need to be embedded and some other not?为什么有些库需要嵌入而有些则不需要? 【发布时间】:2018-12-04 22:09:02 【问题描述】:在ios中,我不明白为什么有些库需要嵌入(如WebRTC
)而有些则不需要(如facebook
)?
【问题讨论】:
【参考方案1】:Facebook 的框架是静态库。这在 iOS 中有点不寻常;大多数东西都是动态库。静态库是在构建时而不是在加载时链接的,因此您不需要嵌入它们。
【讨论】:
谢谢!您是否如何(手动)在项目(不是用 xcode 制作的)中嵌入动态库?我们只需要使用应用程序部署库吗? 如果您手动构建它们,那么您需要将库放在您链接到的目录中(相对于@rpath)。这通常在框架中,但这取决于您构建应用程序的方式。应用程序上的otool -L
会告诉您它希望从哪里加载库。
我刚做了,otool -L ALLiveVideoChatClient.app/ALLiveVideoChatClient 返回我:@rpath/WebRTC.framework/WebRTC(兼容版本0.0.0,当前版本0.0.0)....什么是@rpath 的值吗?我确实像你说的那样,将库放在框架中(ALLiveVideoChatClient.app/Frameworks/WebRTC.framework/WebRTC),但它在加载时总是失败:@rpath/WebRTC.framework/WebRTC:找不到图像:(所以也许我的rpath 不好,但是如何从链接器更新它?
我总是收到此错误:DYLD,未加载库:@rpath/WebRTC.framework/WebRTC |引用自:/var/containers/Bundle/Application/E60EAD9F-0CB6-4B13-80B3-3ED71B562BAB/ALLiveVideoChatClient.app/ALLiveVideoChatClient |原因:找不到图像,但我很好地复制了 ALLiveVideoChatClient.app/Frameworks/WebRTC.framework/WebRTC 中的库,所以我做错了什么?也许我需要设置@rpath?如何检查它的价值?
***.com/questions/24045633/… 如果您在链接时遇到问题,您需要打开一个新问题,说明您的构建方式以及遇到的问题。以上是关于为啥有些库需要嵌入而有些则不需要?的主要内容,如果未能解决你的问题,请参考以下文章