我正在使用 Monotouch 开发 iPhone 应用程序。在我的应用程序中,我必须使用第三方提供的静态库。这个库用于 Xcode,用 Objective-C 编写。我使用绑定(bind)项目模板将它与 Monotouch 绑定(bind)在一起。当我将生成的 dll
添加到我的项目时,它可以正常编译,但是当我使用库中的类时,它无法编译并出现以下错误:
Duplicate symbol _DeleteCriticalSection
那我该怎么办呢?有没有办法消除冲突? 提前谢谢你。
最佳答案
我在 FAT 库中看到过类似的情况,其中一些文件被复制,导致对象重复。您可以尝试查看这是否是同一问题,例如如果您的库名为 mystaticlibrary.a
$ nm mystaticlibrary.a | grep DeleteCriticalSection
现在,如果您有一个 FAT 库(不止一种架构),那么多次出现该符号是正常的。要查看是否是这种情况,请执行以下操作:
$ file mystaticlibrary.a
您应该有每个体系结构的符号。如果您看到更多符号(例如 3x DeleteCriticalSection
但只有 2 个 arch),那么您遇到了类似的问题。
修复(如果是同一个问题)是拆分 FAT 库(lipo
工具),然后是每个体系结构特定的库,然后重新合并所有内容(arch 然后是 FAT)。
您最好的办法可能是联系您的库供应商并向他索要一个固定的库(构建过程中可能出了点问题)。将上述命令输出提供给他们,他们很可能会找出问题所在。
关于ios - monotouch 库和我使用的一些第 3 方库中的重复符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14546297/