编译标志不应用静态链接库

时间:2015-10-06 16:27:01

标签: c++ c xcode macos

我正在开发Xcode项目,我有一个静态库,链接到另一个库,我在#34;其他C标志(参见图像)中使用标志-DMODULE进行编译。

enter image description here

enter image description here

然而,在执行期间,当我到达其中一个静态库函数时,MODULE不再定义,任何想法为什么?

静态库在运行时之前链接,并且由一堆.o文件组成,因此我认为它们与标志所适用的父库中的任何其他.o文件具有相同的处理方式。我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

编译器定义在从源到对象(.o)的转换过程中应用。静态库只是粘在一起的一堆.o个文件。如果您已有静态库,则无法再对其应用定义。如果需要更改定义,则需要重新编译源代码而不是使用静态库。

请记住,编译器定义由预处理器应用。它们用其他一些文本替换部分源代码文本。它们在编译器甚至看到代码之前应用(更不用说链接器了)。