1

在 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指令不应该“智能”包含文件吗?还有其他原因我可能会收到此错误吗?我可以尝试其他解决方案吗?

谢谢你的帮助 :)

4

1 回答 1

3

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

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

于 2012-06-14T17:56:09.167 回答