web-dev-qa-db-fra.com

Symboles non définis pour l'architecture i386: "_SCNetworkReachabilitySetCallback"

J'utilise xcode4, sur un projet openglES j'ai ajouté du code pour l'achat in-app à partir du tutoriel: http://www.raywenderlich.com/2797/introduction-to-in-app-purchases

j'ai ajouté SystemConfiguration.framework mais ces erreurs se produisent:

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

si je supprime la référence du cadre, l'erreur est la même. en ajoutant encore rien ne se passe ... dans -Xlinker 2 -framework Foundation -framework UIKit [...] devrais-je voir "-framework SystemConfiguration" non? pourquoi n'y est-il pas? Quelqu'un a-t-il des idées?

tirant le cadre du projet-> phases de construction-> lien binaire avec la bibliothèque ce qui en fait le premier cadre j'ai cet erros:

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

La configuration du système est là, l'erreur toujours là ... qu'est-ce que cela peut être? Merci

34
sefiroths

je l'ai trouvé! j'ai copié le SystemConfiguration.framework dans mon dossier de projet (en cochant la case lorsque j'ai ajouté à partir de xcode). la suppression de ce dossier dans mon projet se compile maintenant bien

51
sefiroths

Après avoir ajouté SystemConfiguration.framework des phases de construction mon projet se compile bien ...

amusez vous...!

37
preetam

J'ai aussi eu le même problème. J'ai ajouté certains cadres directement en les faisant glisser et en les déposant.

Pour le résoudre, je les ai tous supprimés et les ai ajoutés via le menu Target> Build Phases puis j'ai ajouté tous les frameworks nécessaires via Link Binary With Libraries.

Après cela, votre code devrait à nouveau fonctionner correctement.

10
Eager Beaver

c'est simple.

scnetworkreachability le rappel est étiqueté comme un symbole non défini, ce qui implique qu'une bibliothèque ou un fichier d'infrastructure est manquant

le préfixe sc signifie configuration système

  • cliquez sur le nom du projet choisissez Résumé sur le côté droit

  • cliquez liens binaires et frameworks

  • cliquez sur plus dessus, vous pouvez voir une exploration vers le bas avec des collections de frameworks et bibliothèques voir s'il y a quelque chose appelé systemConfigurationframework

  • sélectionnez cela et appuyez sur ok

  • Maintenant build et run le problème est résolu

8
Durai Amuthan.H

Comme mentionné ci-dessus, après avoir importé les 3 frameworks suivants, cela fonctionne!

    CFNetwork.framework
    Security.framework
    SystemConfiguration.framework

Merci beaucoup!

5
Dinesh

Quand j'utilisais AFNetworking, après avoir obtenu ces erreurs, j'ai importé 3 frameworks

CFNetwork.framework
Security.framework
SystemConfiguration.framework

Toutes les erreurs auront disparu .. profitez-en !!!

5
Ankuribc

J'ai eu le même problème après une mise à jour du repo.

La solution qui a fonctionné pour moi a été de supprimer les références du projet pour toutes les classes et de les ajouter à nouveau. Le problème est qu'il existe une grande possibilité de perturber la synchronisation du dépôt.

0
Eu Vid

Je tiens à souligner que j'ai également eu un problème similaire à cela.

J'ai copié certains fichiers sur xcode et j'ai accidentellement sélectionné "ProjectTests" au lieu du projet. Supprimez simplement les fichiers et ajoutez-les à votre projet en vous assurant que le projet principal (pas les tests unitaires) est sélectionné

0
Chadams