【问题标题】:Restkit + MKStoreKit: duplicate symbol because of JSONKitRestkit + MKStoreKit:由于 JSONKit 导致重复符号
【发布时间】:2011-12-02 14:05:15
【问题描述】:

我在我的应用程序中使用 MKStoreKit。现在我也想添加 RestKit,但是添加 RestKit 后,我​​在 XCode 中收到以下错误消息:

Duplicate symbol _jk_collectionClassLoadTimeInitialization in [...]/libRestKitJSONParserJSONKit.a(JSONKit.o) and [...]/Objects-normal/armv7/JSONKit.o for architecture armv7

有什么想法我能做些什么吗?

非常感谢!

编辑:如果我从 MKStoreKit 中删除 JSONKit,我会收到以下错误:

【问题讨论】:

  • 当我尝试使用 facebook-sdk 时,我遇到了同样的“冲突”。我刚刚从 facebook 框架中删除了嵌入式 JSONKit(在你的情况下来自 MKStoreKit)。根本原因是你的项目中有两次 JSONKit
  • 但是,它说它没有找到objectFromJSONData - 尽管这个方法也在剩余的(RESTKit)-JSONKit.h/.m中......
  • 您是否更新了目标的构建阶段 -> Link Binary With Libraries 以链接 RestKit 的 JSONKit?
  • 是的:我链接了来自 RestKit 的 6 个库:libRestKitXMLParserLibxml、libRestKitCoreData、libRestKitJSONParserJSONKit、libRestKitNetwork、libRestKitObjectMapping、libRestKitSupport
  • 好的,尝试只从 MKStoreKit 中删除 JSONKit.m,保留标头。

标签: xcode4 restkit duplicate-symbol mkstorekit


【解决方案1】:

该错误是由与 MKStoreKit 捆绑的 JSONKit 框架与`RestKit 也引入了 JSONKit 的事实之间的冲突引起的。

最简单的解决方案是从您的项目(MKStoreKit 附带的那个)中删除JSONKit.m 文件并保留JSONKit.h 标头。请务必将您的项目与 RestKit 框架提供的 JSONKit 链接。这将允许您的项目“看到” JSONKit,并且链接器将其与捆绑的库链接。

【讨论】:

    【解决方案2】:

    我在使用 Deezer 和 AdFonic 静态库时遇到了同样的问题。但是这两个库都是闭源的。在这种情况下,解决方案是从库中删除符号。

    Nathan de Vries 在这里发布了一个很棒的教程:

    http://atnan.com/blog/2012/01/12/avoiding-duplicate-symbol-errors-during-linking-by-removing-classes-from-static-libraries/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多