GCC 抱怨重复定义(仅存在一个)

问题描述 投票:0回答:2

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

感谢您的帮助:)

objective-c gcc linker-errors
2个回答
3
投票

问题是您在多个翻译单元中包含相同的定义(

Block.o
bits.o
)。要解决此问题,请声明函数
inline
或将定义移至(单个)源(非标头)文件。

这与

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


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.