【问题标题】:Duplicate symbols in monotouch library and some 3rd party library I usemonotouch 库和我使用的一些 3rd 方库中的重复符号
【发布时间】:2013-01-29 05:10:35
【问题描述】:

我正在使用 Monotouch 开发 iPhone 应用程序。在我的应用程序中,我必须使用第 3 方提供的静态库。这个库是为 Xcode 编写的,是用 Objective-C 编写的。我使用绑定项目模板将它与 Monotouch 绑定。当我将生成的 dll 添加到我的项目中时,它可以正常编译,但是当我使用库中的类时,它无法编译并出现以下错误:

Duplicate symbol _DeleteCriticalSection

那我该怎么办?有什么办法可以消除冲突吗? 提前谢谢你。

【问题讨论】:

    标签: ios objective-c xamarin.ios static-libraries


    【解决方案1】:

    我在 FAT 库中看到过类似的情况,其中一些文件被重复,导致对象重复。您可以尝试查看这是否是同一个问题,例如如果你的库被命名为mystaticlibrary.a

    $ nm mystaticlibrary.a | grep DeleteCriticalSection
    

    现在,如果您有一个 FAT 库(多个架构),则多次使用该符号是正常的。要查看是否是这种情况,请执行以下操作:

    $ file mystaticlibrary.a
    

    你应该有每个架构的符号。如果您看到更多符号(例如 3x DeleteCriticalSection 但只有 2 个拱形),那么您会遇到类似的问题。

    修复(如果是同样的问题)是拆分 FAT 库(lipo 工具),然后是每个体系结构特定的库,然后重新合并所有内容(arch 然后是 FAT)。

    您最好的选择可能是联系您的库供应商并要求他提供一个固定库(构建过程中可能有问题)。给他们上面的命令输出,他们很可能会找出问题所在。

    【讨论】:

      猜你喜欢
      • 2013-02-22
      • 1970-01-01
      • 2012-07-09
      • 2018-08-28
      • 2019-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多