海湾合作委员会抱怨重复的定义(只有一个存在)

时间:2012-06-14 17:53:21

标签: objective-c gcc linker-errors

在Xcode中处理大型项目时,我似乎只是遇到了一个错误。这次,GCC抱怨结构打印功能的重复定义 - 实际定义(在不同的文件中),以及使用它(在驱动程序中)的定义。

我得到的具体错误是:

ld: duplicate symbol _fprintConfiguration in
/.../bits.build/Objects-normal/x86_64/Block.o and
/.../bits.build/Objects-normal/x86_64/bits.o

其中Block.o包含定义,bits.o包含驱动程序。


我已经对此进行了一些研究,但似乎每个问题都存在于人们实际使用#include两次定义它,但在我的所有文件中我只使用#import。是不是#import指令应该'智能'包含文件?有没有其他原因我可能会收到此错误?我可以尝试其他任何解决方案吗?

感谢您的帮助:)

1 个答案:

答案 0 :(得分:3)

问题是您在多个翻译单元(Block.obits.o)中包含相同的定义。要解决此问题,请声明函数inline或将定义移动到(单个)源(非标头)文件。

这与#include#import的问题正交。这是在相同的翻译单元中多次包含相同的代码。