-1

Xcode 2 から Xcode 4 にジャンプしたところ、ヘッダーのインポートが機能しないことがわかりました。たとえば、単一の変数 foo を定義するヘッダー ファイルを作成し、ヘッダーをクラス Ah とクラス Bh にインポートすると、アプリはリンカー エラーでコンパイルに失敗します。

duplicate symbol _foo in:
/Users/myself/Library/Developer/Xcode/DerivedData/Testcrap-grlgbsgwysjmmzagvozfywcwafar/Build/Intermediates/Testcrap.build/Debug/Testcrap.build/Objects-normal/x86_64/Class A.o
/Users/myself/Library/Developer/Xcode/DerivedData/Testcrap-grlgbsgwysjmmzagvozfywcwafar/Build/Intermediates/Testcrap.build/Debug/Testcrap.build/Objects-normal/x86_64/Class B.o
ld: 1 duplicate symbol for architecture x86_64
-clang: error: linker command failed with exit code 1 (use -v to see invocation)

なんてこと?Xcode 4 は import の意味さえ知らないようです。これを修正するにはどうすればよいですか?

4

2 に答える 2

0

すべてが合法であるように見えます。そのような場合、重複シンボル エラーが発生するはずです。2 つの異なる翻訳単位で同じ記号を定義しています。問題は、なぜ XCode 2 がそれについて文句を言わなかったのかということです (時代遅れのコンパイラ/リンカーのバグかもしれませんね?)。とにかく、この種の問題を解決するには、(extern を介して) ヘッダーで変数を宣言し、ソース ファイルで定義する必要があります。詳細については、この質問をご覧ください。 宣言定義
の違いについては、こちらをご覧ください。

于 2013-07-22T05:30:08.897 に答える
0

コード ファイルを #import/#include していないことを確認し、ビルドの右側の列でそれらがすべてチェックされていることを確認し、後の段階でそれらと外部リンクしないようにしてください。

コード ファイルをインポート/インクルードする必要がある場合は、右側の列でビルド用のファイルのチェックを外します。

お役に立てれば。

于 2013-07-21T23:36:21.707 に答える