【问题标题】:duplicate symbol for architecture x86_64架构 x86_64 的重复符号
【发布时间】:2015-01-22 04:07:12
【问题描述】:

我在使用 Core plot API 和 ESRI map Arc GIS API 时遇到重复符号问题。 在我的应用程序中,我使用的是 Core plot 和 ArcGIS API。为了提供对 64 位设备的支持,我下载了 ArcGI(ESRI 地图)的新 API,并相应地更新了 64 位的 CorePlot API。进行更改后,我遇到了问题:

错误描述在这里:

duplicate symbol _squareOfDistanceBetweenPoints in:
    /Users/xxxx/Library/SDKs/ArcGIS/iOS/ArcGIS.framework/ArcGIS(AGSCPTUtilities.o)
    /Users/xxxx/Desktop/18 Nov/SCM_iPad/SCM/CorePlot/coreplot_new.a(CPTUtilities.o)
duplicate symbol _niceNum in:
    /Users/xxxx/Library/SDKs/ArcGIS/iOS/ArcGIS.framework/ArcGIS(AGSCPTAxis.o)
    /Users/xxxx/Desktop/18 Nov/SCM_iPad/SCM/CorePlot/coreplot_new.a(CPTAxis.o)
duplicate symbol _CreateRoundedRectPath in:
    /Users/xxxx/Library/SDKs/ArcGIS/iOS/ArcGIS.framework/ArcGIS(AGSCPTPathExtensions.o)
    /Users/xxxx/Desktop/18 Nov/SCM_iPad/SCM/CorePlot/coreplot_new.a(CPTPathExtensions.o)
duplicate symbol _AddRoundedRectPath in:
    /Users/xxxx/Library/SDKs/ArcGIS/iOS/ArcGIS.framework/ArcGIS(AGSCPTPathExtensions.o)
    /Users/xxxx/Desktop/18 Nov/SCM_iPad/SCM/CorePlot/coreplot_new.a(CPTPathExtensions.o)
duplicate symbol _MyCGPathApplierFunc in:
    /Users/xxxx/Library/SDKs/ArcGIS/iOS/ArcGIS.framework/ArcGIS(NSCoderExtensions.o)
    /Users/xxxx/Desktop/18 Nov/SCM_iPad/SCM/CorePlot/coreplot_new.a(NSCoderExtensions.o)
ld: 5 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

如果有人遇到问题,请提出建议。我无法弄清楚这些 API 中的重复内容之前这两个工作正常(没有 64 位支持的旧 api)

【问题讨论】:

  • 两个框架中似乎都存在许多函数(例如CreateRoundedRectPath)。一个框架可能包含在另一个框架中,这意味着您只需要包含其中一个。
  • 这可能对你有帮助:stackoverflow.com/questions/6660199/…
  • 搜索重复的符号(_squareOfDistanceBetweenPoints,_niceNum....)如果它们被实现(我认为这些是方法)两次删除其中一个..
  • 有没有办法从其中任何一个库中删除..
  • 从库中获取重复符号是不常见的。默认情况下,链接器会选择一个并认为依赖关系已满足。您是否使用任何链接标志来强制加载库符号(-ObjC、-all_load...)?另外,您是否尝试过不使用 coreplot 进行构建?

标签: ios objective-c xcode6 core-plot esri-arc-engine


【解决方案1】:

您可能在 .H 文件中添加了任何 Typedef 函数,并在许多类中导入了 .H。

在我的情况下,这是一个问题,

ShadowASettings ShadowSettingsMake(CGSize shadowSize, CGFloat shadowOpacity, CGFloat shadowRadius){
    ShadowASettings settings;
    settings.shadowOffset = shadowSize;
    settings.shadowOpacity = shadowOpacity;
    settings.shadowRadius = shadowRadius;
    return settings;
}

这个函数我写在ABC.h 然后我在我的HomeVC.h 和XYZ.h 中导入了ANC.h 所以,然后我简单地将这个函数移动到该类的 .m 中,因为它只在 .m 中使用

【讨论】:

    【解决方案2】:

    您可能导入了 .m 而不是 .h 文件

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      • 2016-06-03
      • 2021-10-04
      • 2015-02-10
      • 2018-09-15
      相关资源
      最近更新 更多