iOS开发——引入framework报错referenced from的解决办法

今天项目需要引入百度钱包的SDK,需要将百度提供的静态库(framework)拖进项目里。如图所示:

我把它放到了项目里vender/BaiDu文件夹下,然后编译报错,如图所示:

iOS开发——引入framework报错referenced from的解决办法_第1张图片

在此之前,已经按照百度钱包SDK接入文档把相应的一些配置做好了。

一、遇到这种问题,首先检查是不是系统在编译阶段无法搜索到这个framework并编译,这需要按下图,配置一些东西,告诉xcode到哪里去找这个framework

iOS开发——引入framework报错referenced from的解决办法_第2张图片

根据实际情况,填入路径,因为我是放在vender/BaiDu,所以填法如图

二、再检查Build Phases里的Link Binary With Libraries里,有没有加入这个静态库,如果没有,点击+号,弹出一个对话框,点击add other,找到那个framework,加进来。然后,再此编译,看看是否还报错。

三、重点

我的错误仍然在,说明不是因为找不到静态库,而是编译静态库里的东西时,出了错误,那么我们回到错误本身,如图所示

它的意思是,1这个文件里使用2这个东西报了错。然后我进入这个framework里看,确实存在BaiduWallet_Protal这个文件,说明很可能在这文件里面,用到了MFMessageComposeViewController。

这极有可能是MFMessageComposeViewController是某个三方框架里的东西,或者是ios官方某个框架里的东西,由于我已经按照接入文档把百度SDK需要的三方库全部导入了,所以排除第一项,然后我去百度“MFMessageComposeViewController”,得出结论,这个东西依赖一个静态库messageUI.framework,然后,与上文第二步的方法类似,添加这个静态库,如图

iOS开发——引入framework报错referenced from的解决办法_第3张图片

再编译,发现对应那一行的错误已经不见了

还剩下两个错,同理。研究发现JSValue和JSContext是依赖JavaScriptCore.framework的东西,所以,把JavaScriptCore.framework添加进工程,再次编译,就没有错误了。


备注:

1、如果导入sdk时有demo,可以关注关注demo里引入了哪些静态库,或者说引入了哪些框架,通常demo是纯净的不会引入一些无关的东西,所以如果你的工程报错,可以走捷径,先看看是不是demo里有的框架或者静态库,你没有。

2、一二步骤,是基于导入静态库时出错需要做的事。如果你报错的场景与我不同,可以重点关注三的思路。希望对您有帮助!

3、转发请说明出处,谢谢!

你可能感兴趣的:(iOS开发——引入framework报错referenced from的解决办法)