Подтвердить что ты не робот

Undefined символы для архитектуры 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" правильно? почему нет? у кого есть идеи?

вытащить фреймворк из фаз project- > build- > link с библиотекой, сделав ее первой структурой, у меня есть это 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

SystemConfiguration есть, ошибка все еще существует... что это может быть? спасибо

4b9b3361

Ответ 1

нашел это! Я скопировал SystemConfiguration.framework в мою папку проекта (установив флажок, когда я добавил из xcode). удаление этой папки в моем проекте теперь хорошо компилируется

Ответ 2

После добавления SystemConfiguration.framework из фаз сборки мой проект хорошо компилируется...

весело...!

Ответ 3

У меня была та же проблема. Я добавил несколько фреймворков непосредственно с их перетаскиванием.

Чтобы решить эту проблему, я удалил все из них и добавил их через меню Целевая > Фазы сборки, а затем снова добавил все необходимые фреймворки через Link Binary With Libraries.

После этого ваш код снова будет работать нормально.

Ответ 4

это просто.

scnetworkreachability Обратный вызов обозначается как символ undefined, который подразумевает отсутствие библиотеки или файла фрейма

префикс sc означает конфигурацию системы

  • нажмите на название проекта, выберите Сводка с правой стороны

  • нажмите бинарные файлы и фреймворки

  • нажмите плюс на нем, после чего вы можете увидеть развертку с коллекциями фреймворков и libaries, чтобы увидеть, есть ли что-нибудь вызванное systemConfigurationframework

  • выберите это и нажмите ok

  • Теперь построить и запустить проблема решена

Ответ 5

Когда я использовал AFNetworking, после получения этих ошибок были импортированы 3 фреймворка

CFNetwork.framework
Security.framework
SystemConfiguration.framework

Все ошибки исчезнут.. наслаждайтесь!!!

Ответ 6

Как уже упоминалось выше, после импорта следующих трех фреймворков он работает!

    CFNetwork.framework
    Security.framework
    SystemConfiguration.framework

Спасибо большое!

Ответ 7

Я хотел бы указать, что у меня также возникла проблема, подобная этому.

Я скопировал некоторые файлы на xcode и случайно выбрал "ProjectTests" вместо проекта. Просто удалите файлы и снова добавьте их в свой проект, чтобы убедиться, что выбран основной проект (а не модульные тесты).

Ответ 8

У меня была такая же проблема после обновления из репо.

Решение, которое работало для меня, заключалось в том, чтобы удалить ссылки из проекта для всех классов и добавить их снова. Проблема в том, что существует большая вероятность испортить синхронизацию репо.