我使用自定义的静态框架来封装我的模块,比如A、B、C……,A是基础层,所以B&C依赖于A,它们都使用A中的一个符号叫“Semaphore” .
现在我在我的应用程序“DemoX”中添加了A、B、C,DemoX 只直接使用B & C,链接时出现错误。
Changed: DemoX depends on a static library "libM" which uses A directly.
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”。 那么,如何解决呢?
谢谢!
最佳答案
我解决了这个问题。
都是我的错,这个错误只出现在release中,因为我编译A时设置了“Symbols Hidden by Default”YES,所以别人看不到A所有的符号。设置为 NO,一切都很好。
关于iOS 和 Xcode : custom frameworks link error, undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12069320/