web-dev-qa-db-ja.com

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

私はxcode4を使用し、openglESプロジェクトで、チュートリアルからアプリ内購入用のコードを追加しました: http://www.raywenderlich.com/2797/introduction-to-in-app-purchases

systemConfiguration.frameworkを追加しましたが、このエラーが発生します。

Ld /Users/Eros/Library/Developer/Xcode/DerivedData/blatest-acmdklrqungznggpjewgxuxqsvwo/Build/Products/Debug-iphonesimulator/blatest.app/blatest normal i386
    cd /Users/Eros/Desktop/blatestDB
    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/Eros/Library/Developer/Xcode/DerivedData/blatest-acmdklrqungznggpjewgxuxqsvwo/Build/Products/Debug-iphonesimulator -F/Users/Eros/Library/Developer/Xcode/DerivedData/blatest-acmdklrqungznggpjewgxuxqsvwo/Build/Products/Debug-iphonesimulator -F/Users/Eros/Desktop/blatestDB -filelist /Users/Eros/Library/Developer/Xcode/DerivedData/blatest-acmdklrqungznggpjewgxuxqsvwo/Build/Intermediates/blatest.build/Debug-iphonesimulator/SLQTSOR.build/Objects-normal/i386/blatest.LinkFileList -mmacosx-version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -framework Foundation -framework UIKit -framework OpenGLES -framework QuartzCore -framework AVFoundation -framework AudioToolbox -framework CoreAudio -framework CoreGraphics -framework OpenAL -lz -framework MediaPlayer -framework AVFoundation -framework GameKit -framework StoreKit -o /Users/Eros/Library/Developer/Xcode/DerivedData/blatest-acmdklrqungznggpjewgxuxqsvwo/Build/Products/Debug-iphonesimulator/blatest.app/blatest

Undefined symbols for architecture i386:
  "_SCNetworkReachabilitySetCallback", referenced from:
      -[Reachability startNotifier] in Reachability.o
  "_SCNetworkReachabilityScheduleWithRunLoop", referenced from:
      -[Reachability startNotifier] in Reachability.o
  "_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from:
      -[Reachability stopNotifier] in Reachability.o
  "_SCNetworkReachabilityGetFlags", referenced from:
      -[Reachability currentReachabilityStatus] in Reachability.o
      -[Reachability connectionRequired] in Reachability.o
  "_SCNetworkReachabilityCreateWithName", referenced from:
      +[Reachability reachabilityWithHostName:] in Reachability.o
  "_SCNetworkReachabilityCreateWithAddress", referenced from:
      +[Reachability reachabilityWithAddress:] in Reachability.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

フレームワーク参照を削除すると、エラーは同じです。再度追加しても何も起こりません... -Xlinker 2で-framework Foundation -framework UIKit [...]「-framework SystemConfiguration」が正しく表示されますか?なぜないの?誰もがアイデアを持っていますか?

プロジェクトからフレームワークをプルアップする->ビルドフェーズ->ライブラリとバイナリをリンクする

Ld /Users/Eros/Library/Developer/Xcode/DerivedData/blatest-acmdklrqungznggpjewgxuxqsvwo/Build/Products/Debug-iphonesimulator/blatest.app/blatest normal i386
    cd /Users/Eros/Desktop/blatestDB
    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/Eros/Library/Developer/Xcode/DerivedData/blatest-acmdklrqungznggpjewgxuxqsvwo/Build/Products/Debug-iphonesimulator -F/Users/Eros/Library/Developer/Xcode/DerivedData/blatest-acmdklrqungznggpjewgxuxqsvwo/Build/Products/Debug-iphonesimulator -F/Users/Eros/Desktop/blatestDB -filelist /Users/Eros/Library/Developer/Xcode/DerivedData/blatest-acmdklrqungznggpjewgxuxqsvwo/Build/Intermediates/blatest.build/Debug-iphonesimulator/SLQTSOR.build/Objects-normal/i386/blatest.LinkFileList -mmacosx-version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -framework SystemConfiguration -framework Foundation -framework UIKit -framework OpenGLES -framework QuartzCore -framework AVFoundation -framework AudioToolbox -framework CoreAudio -framework CoreGraphics -framework OpenAL -lz -framework MediaPlayer -framework AVFoundation -framework GameKit -framework StoreKit -o /Users/Eros/Library/Developer/Xcode/DerivedData/blatest-acmdklrqungznggpjewgxuxqsvwo/Build/Products/Debug-iphonesimulator/blatest.app/blatest

ld: warning: ignoring file /Users/Eros/Desktop/blatestDB/SystemConfiguration.framework/SystemConfiguration, missing required architecture i386 in file
Undefined symbols for architecture i386:
  "_SCNetworkReachabilitySetCallback", referenced from:
      -[Reachability startNotifier] in Reachability.o
  "_SCNetworkReachabilityScheduleWithRunLoop", referenced from:
      -[Reachability startNotifier] in Reachability.o
  "_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from:
      -[Reachability stopNotifier] in Reachability.o
  "_SCNetworkReachabilityGetFlags", referenced from:
      -[Reachability currentReachabilityStatus] in Reachability.o
      -[Reachability connectionRequired] in Reachability.o
  "_SCNetworkReachabilityCreateWithName", referenced from:
      +[Reachability reachabilityWithHostName:] in Reachability.o
  "_SCNetworkReachabilityCreateWithAddress", referenced from:
      +[Reachability reachabilityWithAddress:] in Reachability.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

SystemConfigurationがありますが、エラーはまだあります...それは何ですか?ありがとう

34
sefiroths

それを見つけた! SystemConfiguration.frameworkをプロジェクトフォルダーにコピーしました(xcodeから追加するときにチェックボックスをオンにします)。私のプロジェクトでそのフォルダを削除すると、今ではうまくコンパイルされます

51
sefiroths

ビルドフェーズからSystemConfiguration.frameworkを追加すると、プロジェクトがうまくコンパイルされます...

楽しむ...!

37
preetam

私も同じ問題を抱えていました。いくつかのフレームワークをドラッグアンドドロップで直接追加しました。

それを解決するために、それらをすべて削除し、メニューターゲット>ビルドフェーズで追加し、さらにライブラリとバイナリをリンクで必要なすべてのフレームワークを追加しました。

この後、コードは再び正常に動作するはずです。

10
Eager Beaver

簡単です。

scnetworkreachabilityコールバックは未定義のシンボルとしてラベル付けされ、ライブラリまたはフレームワークファイルが欠落していることを意味します

プレフィックスscシステム構成を意味します

  • プロジェクト名をクリックして、右側のSummaryを選択します

  • バイナリとフレームワークをリンクするをクリックします

  • プラス記号をクリックすると、frameworksおよびlibariesのコレクションが表示され、ドリルダウンが表示されますsystemConfigurationframeworkと呼ばれるものがあるかどうかを確認します

  • それを選択して[OK]を押します

  • buildおよびrunで問題は解決しました

8
Durai Amuthan.H

上記のように、次の3つのフレームワークをインポートすると、動作します!

    CFNetwork.framework
    Security.framework
    SystemConfiguration.framework

どうもありがとう!

5
Dinesh

AFNetworkingを使用していたときに、これらのエラーが発生した後、3つのフレームワークをインポートしました

CFNetwork.framework
Security.framework
SystemConfiguration.framework

すべてのエラーがなくなります。お楽しみください!!!

5
Ankuribc

リポジトリから更新した後、同じ問題が発生しました。

私のために働いた解決策は、すべてのクラスのプロジェクトから参照を削除し、それらを再度追加することでした。問題は、レポ同期を台無しにする大きな可能性があることです。

0
Eu Vid

私もこれに似た問題を抱えていることを指摘したいと思います。

いくつかのファイルをxcodeにコピーしましたが、プロジェクトの代わりに誤って「ProjectTests」が選択されていました。ファイルを削除してプロジェクトに再追加するだけで、メインプロジェクト(ユニットテストではない)が選択されていることを確認します。

0
Chadams