23

重複の可能性:
アーキテクチャ i386 のシンボルが見つかりません

完成させるアプリがあり、シミュレーターを実行して前の開発者が何をしたか (Xcode 3 で行われたと思います) を理解しようとすると、Xcode 4 は 25 の問題を示します。

    Ld build/Debug-iphonesimulator/RadioPlayer.app/RadioPlayer normal i386
    cd /Users/haithembenhammouda/Desktop/SonVidéo
    setenv MACOSX_DEPLOYMENT_TARGET 10.6
    setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk -L/Users/haithembenhammouda/Desktop/SonVidéo/build/Debug-iphonesimulator -L/Users/haithembenhammouda/Desktop/SonVidéo/Classes/RadioKitLib -L/Users/haithembenhammouda/Desktop/SonVidéo -F/Users/haithembenhammouda/Desktop/SonVidéo/build/Debug-iphonesimulator -filelist /Users/haithembenhammouda/Desktop/SonVidéo/build/SonVidéo.build/Debug-iphonesimulator/RadioPlayer.build/Objects-normal/i386/RadioPlayer.LinkFileList -mmacosx-version-min=10.6 -ObjC -Xlinker -objc_abi_version -Xlinker 2 -framework Foundation -framework UIKit -framework CoreGraphics -framework SystemConfiguration -framework MediaPlayer -framework CFNetwork -framework AudioToolbox -framework QuartzCore -lsqlite3.0 -framework AVFoundation -lRadioKit -framework MessageUI -o /Users/haithembenhammouda/Desktop/SonVidéo/build/Debug-iphonesimulator/RadioPlayer.app/RadioPlayer
Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_RadioKit", referenced from:
      objc-class-ref in RadioPlayerViewController.o
  ".objc_class_name_UIColor", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(BufferView.o)
  ".objc_class_name_UIView", referenced from:
      .objc_class_name_BufferView in libRadioKit.a(BufferView.o)
  ".objc_class_name_NSObject", referenced from:
      .objc_class_name_ASE_Event in libRadioKit.a(ASE_Event.o)
      .objc_class_name_AudioStreamEngine in libRadioKit.a(AudioStreamEngine.o)
      .objc_class_name_RadioKit in libRadioKit.a(RadioKit.o)
      .objc_class_name_XMLMetaParser in libRadioKit.a(XMLMetaParser.o)
  ".objc_class_name_NSDate", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
  ".objc_class_name_NSValue", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
  ".objc_class_name_NSScanner", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
  ".objc_class_name_NSCharacterSet", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
  ".objc_class_name_NSAutoreleasePool", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
      pointer-to-literal-objc-class-name in libRadioKit.a(XMLMetaParser.o)
      pointer-to-literal-objc-class-name in libRadioKit.a(reachability.o)
  ".objc_class_name_NSFileManager", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
  ".objc_class_name_NSURLConnection", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
      pointer-to-literal-objc-class-name in libRadioKit.a(XMLMetaParser.o)
  ".objc_class_name_NSThread", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
  .....(etc)
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

PS: フレームワークを確認したところ、それらはすべて存在します。

4

4 に答える 4

24

パーティーには少し遅れましたが、このエラーのある人にとっては価値があるかもしれません..

一連のファイルを Xcode プロジェクトにそのままコピーしました。それらをプロジェクトのビルド フェーズに追加するのを忘れると、「アーキテクチャ i386 の未定義のシンボル」というエラーが表示されます。したがって、実装ファイルを Compile Sources に追加し、Xib ファイルを Copy Bundle Resources に追加します。

エラーは、コンパイル ソースにクラスが含まれていないという理由だけでクラスへのリンクがないことを示していました。

于 2012-08-14T21:17:45.203 に答える
21

プロジェクト ターゲットで使用されるメソッドに必要なフレームワークを、ビルド フェーズの "Link Binaries With Libraries" リストに追加すると、簡単に動作します。プロジェクトにインポートしたように

QuartzCore.framework

バグについて

アーキテクチャ i386 の未定義シンボル:

于 2012-02-13T13:15:59.207 に答える
2

明白に聞こえるかもしれませんが、転送クラス ファイルのスペルを常に確認してください。XCode (少なくとも XCode 4.3.2) は、実際にはキャメルケースが正しくない宣言を緑色に変えることがあります。この例のように:

"_OBJC_CLASS_$_RadioKit", referenced from:
  objc-class-ref in RadioPlayerViewController.o

RadioKit がクラス ファイルで、それを別のファイルのプロパティにすると、インターフェイス宣言で、

Radiokit *rk;

実際の宣言が次のようになっている場合、緑色で「Radiokit」と表示されます。

RadioKit *rk;

このエラーは、このタイプのエラーもスローします。別の例 (私の場合) は、ユニバーサル アプリのクラス名に _iPhone および _iphone 拡張子がある場合です。適切なファイルを _iphone から正しい _iPhone に変更すると、エラーはなくなりました。

于 2012-05-02T20:10:56.570 に答える
-5

xCode 4で作業したい人のために、この問題の解決策を見つけました。あなたがしなければならないことは、SimulatorSDKフォルダー /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/Systemからフレームワークをインポートすることだけです/ライブラリ/フレームワーク

実際の iDevice でアプリをテストしようとしたときに機能するかどうかはわかりませんが、シミュレーターで機能することは確かです。

楽しい

于 2011-07-21T08:12:34.647 に答える