我刚刚完成了将相当数量的c-source移植到iOS平台并将它们打包为通用静态框架。然后,我将框架(而不是项目)添加到示例iOS应用程序中,以测试链接和正确的功能。就在那时我遇到了一个令人羞愧的问题。
在我试图解决here所描述的问题时,我也遇到了一些通过大量使用宏而构成的符号(我讨厌这些符号)。其中一些宏使用的函数属性实际上是gcc的扩展而不是标准C的扩展。
当然我总是可以添加-std = gnu89,但即便如此,我也不确定它是否会解决静态库中未定义符号的原始问题。
不仅如此,我现在担心我的这些源的iOS端口可能不是一个准确的端口,并且可能导致可能与编译器的可待因和/或优化策略相关的错误/问题类型。
如果您能分享一些关于如何最好地了解该港口的经验/建议,我将非常感激。
谢谢!
答案 0 :(得分:1)
从使用clang 8.0进行的手动测试来看,__attribute__((constructor))
和__attribute__((__constructor__))
都可以满足您的需求。