Undefined symbols for architecture i386: “_SCNetworkReachabilitySetCallback”

匿名 (未验证) 提交于 2019-12-03 02:54:01

问题:

I use xcode4, on a openglES project i have added code for in-app purchase from the tutorial: http://www.raywenderlich.com/2797/introduction-to-in-app-purchases

i have added SystemConfiguration.framework but this errors occurs:

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 

if i delete framework reference the error is the same. adding again nothing happens... in -Xlinker 2 -framework Foundation -framework UIKit [...] should i see "-framework SystemConfiguration" right? why is not there? do anyone has ideas?

pulling up the framework from the project->build phases->link binary with library making it the first framework i have this 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 is there, the error still there... what can it be? thanks

回答1:

found it! i have copied the SystemConfiguration.framework into my project folder (checking the box when i added from xcode). deleting that folder in my project now compiles well



回答2:

After adding SystemConfiguration.framework from build phases my project compiles well...

have a fun...!



回答3:

I had also the same problem. I added some frameworks directly with dragging and dropping them.

To resolve it, I deleted all of them and added them through the menu Target>Build Phases and then again added all needed frameworks through Link Binary With Libraries.

After this, your code should be working fine again.



回答4:

it's simple.

scnetworkreachability callback is labeled as undefined symbol which implies some library or framework file is missing

the prefix sc means system configuration

  • click on the project name choose Summary on right side

  • click link binaries and frameworks

  • click plus on it then you can see a drill down with collections of frameworks and libaries see if there is anything called systemConfigurationframework

  • select that and press ok

  • Now build and run the problem is solved



回答5:

When i was using AFNetworking, after getting these errors imported 3 frameworks

CFNetwork.framework Security.framework SystemConfiguration.framework 

All errors will gone.. enjoy !!!



回答6:

As mentioned above, after importing the following 3 frameworks, it works!

    CFNetwork.framework     Security.framework     SystemConfiguration.framework 

Thanks a lot!



回答7:

I would like to point out I also got a problem simular to this.

I copied some files over to xcode and accidently had "ProjectTests" selected instead of the project. Just delete the files and re-add them to your project making sure the main project ( not the unit tests) is selected



回答8:

I had the same problem after an update from repo.

The solution that worked for me was to delete references from project for all classes and add them again. The problem is that there is a big possibility to mess up the repo synchronization.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!