有人知道在构建静态库时是否广泛使用c-macros来定义和声明函数会影响链接器导出这些符号的能力吗?
我一直遇到这个问题,当我切换到常规函数声明和定义(不使用宏)时,几乎总是大多数符号查找失败都消失了。
这种情况发生在使用Xcode 5并以iOS(arm + i386)为目标的mac平台上。
打开/关闭哪个构建设置无关紧要。似乎有所不同的是宏的使用和符号导出文件的使用。
我问,因为我现在面对的是一大堆代码,它使用了几个级别的宏来进行函数定义和声明,除非我绝对需要,否则我不想改变它。
代码非常复杂(但引人注目:))最初使用GNU make& amp;兄弟姐妹。因此,将其切换到基于XCode的构建是不会在公园散步。它使用标题包含的技巧。
我很欣赏这方面的一些教育:宏和&静态库的符号导出。
谢谢!
答案 0 :(得分:0)
宏在编译器启动之前被扩展,并且链接器在所有目标文件完成之前不会显示。因此,要么您的宏不生成您认为他们所做的代码,要么您已经发现了第一个实现时间旅行的宏。 编辑:或者我完全错过了这一点,可以。