我使用自定义的静态框架来打包我的模块,比如A、B、C...,而A是基础层,所以B&C依赖于A,它们都在A中使用了一个名为“Semaphore”的符号。

现在我将A、B、C添加到我的应用程序“DemoX”中,DemoX只直接使用B和C,链接时出现错误。


Undefined symbols for architecture i386:

"_OBJC_CLASS_$_Semaphore", referenced from:
      objc-class-ref in libM.a
      objc-class-ref in B
      objc-class-ref in C
ld: symbol(s) not found for architecture i386

实际上,我使用“nm”命令来显示A中的符号,它有“_OBJC_CLASS_$_Semaphore”。
那么,如何解决这个问题呢?

谢谢!

最佳答案

我解决了这个问题。

这都是我的错,这个错误只发生在发布中,因为我编译 A 时使用“默认隐藏的符号”是,所以其他人看不到 A 的所有符号。将其设置为 NO,一切都很好。

关于iOS 和 Xcode : custom frameworks link error, undefined symbol ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12069320/

10-13 04:29