美文网首页iOS学习开发移动开发@IT·互联网
iOS开发——引入framework报错referenced f

iOS开发——引入framework报错referenced f

作者: YY程序猿 | 来源:发表于2017-05-26 14:49 被阅读0次

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

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

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

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

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

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

    三、重点

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

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

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

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

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

    备注:

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

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

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

    相关文章

      网友评论

        本文标题:iOS开发——引入framework报错referenced f

        本文链接:https://www.haomeiwen.com/subject/mufxfxtx.html