架构armv7的未定义符号:“_SCNetworkReachabilityCreateWithAddress”

对,这已经成为一个正确的痛苦,我已经看了2天,似乎无法解决它。 这是我得到的错误。

Undefined symbols for architecture armv7: "_SCNetworkReachabilityCreateWithAddress", referenced from: +[Reachability reachabilityWithAddress:] in Reachability.o "_SCNetworkReachabilityCreateWithName", referenced from: +[Reachability reachabilityWithHostName:] in Reachability.o "_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from: -[Reachability stopNotifier] in Reachability.o "_SCNetworkReachabilityScheduleWithRunLoop", referenced from: -[Reachability startNotifier] in Reachability.o "_SCNetworkReachabilitySetCallback", referenced from: -[Reachability startNotifier] in Reachability.o "_SCNetworkReachabilityGetFlags", referenced from: -[Reachability connectionRequired] in Reachability.o -[Reachability currentReachabilityStatus] in Reachability.o ld: symbol(s) not found for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation) 

我添加了SystemConfiguration.framework ,它似乎不想做任何事情,因为这个错误不会消失。 我已经看了很多相同的问题,但是他们中的很多人确认了任何答案。 这个周末刚刚开发的时候没有人碰到它。 任何人都可以帮忙

编辑忘了添加这一点。

ld:警告:忽略文件/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks//SystemConfiguration.framework/SystemConfiguration,缺less必需的架构armv7在文件中

编辑

对@感谢@ gaige我发现了一个问题; 在SystemConfiguration.framework之前有一个额外的斜线,不应该在那里。 我已经删除了框架,并重新添加,并没有帮助。 我怎样才能删除这个额外的斜线?

通常情况下 ,额外的斜线不会造成类似UNIX的构build过程。

但是,您确实需要确保armv7架构位于您的构build尝试使用的框架文件中。 为此,请在命令行使用lipo -info命令:

 lipo -info /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer‌​/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks//SystemConfiguration.framework/Sy‌​stemConfiguration 

你应该看到这样的输出:

 Architectures in the fat file: SystemConfiguration are: armv6 armv7 

如果你不这样做,你的项目可能会被设置为链接到SystemConfiguration.framework的错误版本。 你的机器上有多个版本的框架。 所以,我会validation你的项目中的框架(即SystemConfiguration)的path。

通常情况下,我希望这个文件是这样的(根据您使用的操作系统版本进行调整):

 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Lib‌​rary/Frameworks/SystemConfiguration.framework 

我有一个cordova项目和org.apache.cordova.network-information插件约8小时有这个问题。 通过上面的答案和其他几个答案,鼓励我在“ Project > Target > Build Phases > Link Binary with Libraries Xcode Project > Target > Build Phases > Link Binary with Libraries ”一节中进行search,这是正确的。

但是虽然SCNetworkReachabilityCreateWithAddress是在SystemConfigration.framework定义的,但我无法通过系统地添加和删除这个和其他库来摆脱链接器错误。

最后,我用这个插件创build了一个新的项目,并且像原来一样复制了框架星座。 现在它正在工作。

结论:

  • 如果可能,创build一个带有必要扩展名的新项目,并从中复制星座。 这可能有帮助。
  • 有时候,一个图书馆太多,所以取消选中它。 有时候是相反的。
  • 深入挖掘,检查SystemConfiguration.framework如上面的杰出答案中所述。 它可能与目标架构不匹配。 此外,检查构build包括path奇怪的字符。