我正在开发一个链接多个静态库的 iOS 应用程序。挑战在于,这些链接库定义了具有不同实现的相同方法名称。奇怪的是,我没有收到任何duplicate symbol definition
错误;但是,毫不奇怪,我最终只能访问该方法的一种实现。
更清楚地说,假设我有 libA 和 libB,它们都定义了一个名为 func1() 的全局 C 方法
当我链接 libA 和 libB 并调用 func1() 时,它解析为 libA 或 libB 的实现,而没有任何编译警告。但是,我需要能够分别访问 libA 的 func1() 和 libB 的 func1()。
有一个类似的 SO 帖子解释了如何在 C 中完成它(通过符号重命名),但不幸的是,正如我发现的那样,该objcopy
工具不适用于 ARM 架构(因此是 iPhone)。
(我会将它提交到 App Store,因此,动态链接不是一个选项)