ios – 链接动态(Cocoa Touch)框架内的静态库

前端之家收集整理的这篇文章主要介绍了ios – 链接动态(Cocoa Touch)框架内的静态库前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个链接到谷歌地图的动态框架(据我所见,它仍然是一个静态库,如果不是这样,只是一个框架包装).

问题是,框架与静态库链接,并且似乎直接包含其代码,因为我不需要在使用框架的应用程序中链接或嵌入Google地图,并且一切正常.
除非我在应用程式内使用Google地图.

无论是在编译阶段获得“架构XY的未定义符号”,还是将Google Maps与之链接起来,然后在应用启动期间在调试控制台中收到警告墙,如:

Class GMSPolyline2D is implemented in both
/…/Build/Products/Debug-iphonesimulator/MyFramework.framework/MyFramework
and
/…./Bundle/Application/7C73324B-4A42-4063-98AA-879345997DE6/MyApp.app/MyApp.
One of the two will be used. Which one is undefined.

是否有任何方式只能在框架中与Google地图进行链接,但不包括框架产品中的符号?它适用于动态框架,但静态库似乎只包含在内.我已经尝试使用-weak_framework和-weak_library进行弱连接,但似乎不起作用.

实际上,我无法使Xcode在其框架目录中找到-weak_library的GoogleMaps二进制文件,即使将.framework文件夹直接链接到库搜索路径.

由于我是我框架的唯一用户,我可以强制执行使用框架的所有应用程序都包括Google Maps框架.到目前为止,应用程序工作正常,除了警告(到目前为止,在运行时使用两个类都不重要,因为两者都应该是相同的).但是,如果有更好的解决方案,我会睡得更好:)

编辑:我可以通过在链接器标志部分直接传递绝对路径而不是使用库搜索路径设置来获取-weak_library来工作.然而,问题仍然存在,显然它仍然包含在框架中.

解决方法

不要做数据

最佳做法是将所有与Google Maps相关的代码放在一个单独的库中,链接到您的图书馆和Google Maps静态库.

(信:罗伯特·纳皮尔对How to compile static library that includes optional classes that depend on a third party library的回答

原文链接:https://www.f2er.com/iOS/329600.html

猜你在找的iOS相关文章