ios - 尝试使用2个第三方库时出现重复符号

标签 ios xcode linker libtool mapbox

我在Map SDK和Maply(WhirlyGlobeMaplyComponent)中使用MapBox在我的应用程序上显示地球仪。个别情况下,它们工作正常,但似乎不能很好地协同工作。

问题在于,这两个库下面都使用相同的类(无前缀),并导致链接器问题,指示我的应用程序中有重复的符号。链接器错误的示例如下(我收到多个此类错误)

duplicate symbol _pj_s_eqdc in:
/Users/SagarAdmin/Desktop/Motr-iOS/Motr/WhirlyGlobeMaplyComponent.framework/WhirlyGlobeMaplyComponent(PJ_eqdc.o)
/Users/SagarAdmin/Desktop/Motr-iOS/Motr/MapBox.framework/MapBox(PJ_eqdc.o)

虽然Maply为我提供了Mapbox的iOS SDK库的.a文件,但是我没有可以使用的.a文件。我尝试提取这些并将它们组合到一个单个库中,如How to handle duplicate symbol error from 3rd party libraries?所示

但是我不确定这是否是这两个库的正确解决方案。关于我如何在项目中成功使用这两个框架的任何解决方法?

最佳答案

如果库确实相同,则只需链接一次库。在这种情况下,只需选择两者之一,然后从目标项目设置中的“链接的框架和库”列表中删除另一个。那应该解决“重复符号”的问题。

但是,如果这是两个不同的库(但使用相同的类名),则无法通过合并/合并这些库来解决此问题。您只能通过更改原始代码来解决它,以使所有类名和常量等唯一。

关于ios - 尝试使用2个第三方库时出现重复符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20298930/

相关文章:

sql - 如何在 Azure SQL 数据库中存储字典? ( swift )

Xcode 将 DTXcode key 和其他 key 添加到 Info.plist

gcc - GNU GCC/LD : Which libraries are linked by default?

c++ - 为什么不使用 Q_OBJECT 宏进行编译(链接)?

用于管理推送通知的 iOS API

ios - 我正在构建一个带有 Instagram 集成的 iOS 应用程序。重定向网址应该包含什么?

ios - 无法将类型 '[Thing]' 的值分配给类型 '[Any]' 的值

C++ 链接器错误

ios - UICollectionView didSelectItemAt 从不触发

ios - 将我的应用程序发送到 Apple Store 时, Storyboard设置 : Your app specifies the UIMainStoryBoardFile key for storyboard, 无效