10

アップグレードする前の昨日、Xcode3ではすべてが完全に正常に機能していました。そこで、アップグレードを完了し、コンピューターを再起動して、古いプロジェクトを開きました。コンパイルを開始できるように、ヘッダーパスなどのいくつかの設定を再構成する必要がありました。私は広告メディエーションにAdWhirlを使用していますが、この時点でエラーは次のようになり始めます。

   duplicate symbol _OBJC_METACLASS_$_SBJSON in /Users/Admin/Desktop/TMapLiteAdwhirl/AdWhirl/MMSDK/libMMSDK.a(SBJSON.o) and 
/Users/Admin/Library/Developer/Xcode/DerivedData/TruxMapLite-bgpylibztethnlhkfkdumpvrjvgy/Build/Intermediates/TruxMapLite.build/Debug-iphoneos/TruxMapLite.build/Objects-normal/armv6/SBJSON.o for architecture armv6

それが参照しているライブラリは、AdWhirlに含めている広告ネットワークの1つのSDKです。両方の「重複シンボル」は同じファイルを参照しますが、異なるパスを使用します。XCode 3をまだ持っていた場合は、ビルドパスからこれらのライブラリを除外しようとしますが、Xcode 4でそれをどのように実行できるかわかりません。ライブラリと関連するすべてを削除するまで、すべてを試しました。私のプロジェクトからのファイルですが、これを行うと、AdWhirlディレクトリ内の別のライブラリに対して同じタイプのエラーが発生します。

アップグレードする前にすべてがスムーズに機能し、バイナリを送信する準備ができていたため、これは非常に苛立たしいことです。誰かアドバイスがあれば、ぜひ試してみてください。ありがとう!

4

5 に答える 5

5

.mファイルをインポートしていないことを確認してください。

この間違いは私にとって際限のない問題を引き起こしました。

于 2011-03-28T15:39:03.427 に答える
5

同様の問題が発生し、ビルド設定を編集して解決しました。

  1. Project Navigator左側のナビゲーターリストからを選択します( ⌘-1)。
  2. プロジェクトファイルを選択します。
  3. エディタ領域に表示されるリストからターゲットを選択します。
  4. タブに切り替えBuild Phasesます。
  5. 複製されたライブラリを確認Link Binary with Librariesおよび/または確認してください。Compile Sources

現在、私は同じライブラリまたはプロジェクト構成を使用していないので、これはかなりオフベースである可能性があります。

于 2011-03-15T14:20:30.843 に答える
1

セットアップについてはよくわかりませんが、同様の問題が発生し、ビルドの場所を変更して修正しました。xcode 3で絶対パスに設定しましたが、xcode 4でこの設定を変更するのを忘れていました。[派生データ]オプションを変更すると、すべてのエラーがすぐに修正されました。このオプションは、設定->場所にあります

于 2011-03-24T04:51:16.837 に答える
0

クラスの1つでヘッダーファイルの@classを#importステートメントに置き換えることで、この問題を修正しました。

理論的には@class宣言(および対応する実装の#import)でのみ機能するはずのものは、「duplicatesymbol」エラーでコンパイルしたくありませんでした。

したがって、@classと#importのステートメントを確認してください。

于 2011-04-28T12:00:39.640 に答える
0

古いMakefileビルドの古いオブジェクトファイルがソースフォルダーにあることがわかりました。ソースフォルダをXCodeに追加したときに、誤ってソースファイルとオブジェクトファイルの両方を追加してしまいました。その結果、これらの重複シンボルエラーが発生しました。ソースフォルダから.oファイルと.loファイルを削除すると役に立ちました。

別の古いビルドのソースフォルダーにも.libsフォルダーがありました。これには.oファイルも含まれていました。それらを削除すると問題が解決しました。

于 2012-06-23T21:12:33.977 に答える