1

Xcode で大規模なプロジェクトを処理しているときに、次々とエラーが発生するようです。今回、GCC は struct-printing 関数の定義が重複していると訴えています。1 つは実際に (別のファイルで) 定義されており、もう 1 つは (ドライバーで) 使用されています。

私が得ている特定のエラーはこれです:

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.oとの両方bits.o) に含めていることです。これを修正するには、関数を宣言するinlineか、定義を (単一の) ソース (非ヘッダー) ファイルに移動します。

これは#include対の問題と直交してい#importます。これは、同じ翻訳単位に同じコードを複数回含めることです。

于 2012-06-14T17:56:09.167 に答える