【问题标题】:duplicate symbol error in two 3rd libs, with same const definition两个 3rd 库中的重复符号错误,具有相同的 const 定义
【发布时间】:2014-05-14 23:23:41
【问题描述】:

这两个库是 AFNetworking 和 libcomScore.a。 在 AFHttpClient.h 中,extern NSString * const AFNetworkingReachabilityDidChangeNotification;

在 AFHttpClient.m 中,NSString * const AFNetworkingReachabilityDidChangeNotification = @"***";

在 comScore 静态库的某个类中,AFNetworkingReachabilityDidChangeNotification 被重新定义,导致错误

重复符号 _AFNetworkingReachabilityDidChangeNotification 在: comScore-iOS-ARMV7_ARMV7S_ARM64-2.1403.14/comScore-iOS-ARMV7_ARMV7S_ARM64-2.1403.14/comScore/libcomScore.a(CSReachabilityManager.o) /Users/apple/lib***.a(AFHTTPClient.o)

我不想接触 AFNetworking 中的代码(尽管我可以通过重命名 const 轻松修复它。) 那么有人知道吗?

【问题讨论】:

  • 你是对的。我认为外部库使用AFNetworking,尝试通过从设置中取消选中所有.m 类来删除原始AFNetworking,并尝试从库本身导入AFNetworking。或者,由于您无法更改库中的任何内容,因此请在外部进行更改。
  • 我使用 lipo 检查 libcomScore.a 的内部,结果发现它没有使用任何 AFnetworking 相关文件。所以我想知道这个库是否定义了一些在 AFNetworking 库中恰好具有相同名称(AFNetworkingReachabilityDidChangeNotification)的常量值。我把它重命名为AFNetworkingReachabilityDidChangeNotification111,链接错误消失了,但是更改AFNetworking代码不是我想要的。
  • 您找到解决方案了吗?我也有同样的问题。
  • @MartaRodriguez 我联系了 SDK 提供商,让他们更改代码...原来他们从 AFNetworking 复制了一些代码,并没有重命名一些变量。
  • 太棒了!让我们看看他们是否很快会发布新版本。谢谢@njuxjy!!

标签: ios iphone afnetworking


【解决方案1】:

检查文件的导入,您可能正在导入 .m 文件而不是 .h 文件,例如

#import "myClassName.m"

【讨论】:

  • 只将 Reachability.h 添加到项目中(而不是 Reachability.m)有效并且stackoverflow.com/questions/4839981/…
  • 我认为它与Reachability文件无关,只是AFNetworkingReachabilityDidChangeNotification在两个库中定义。我确实在项目中的某些类中导入了 Reachability.h,但 AFNetworking 没有使用 Reachability。
猜你喜欢
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多