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