2

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

Duplicate symbol _DeleteCriticalSection

那么我能做什么呢?有什么办法可以消除冲突吗?先感谢您。

4

1 回答 1

1

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

$ nm mystaticlibrary.a | grep DeleteCriticalSection

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

$ file mystaticlibrary.a

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

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

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

于 2013-01-28T21:10:35.953 回答