10

是的,这已成为一种正确的痛苦,我已经看了 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,缺少所需的架构armv7在文件中

编辑

对了,感谢@gaige,我发现了一个问题;在 SystemConfiguration.framework 之前有一个不应该存在的额外斜线。我已删除框架并重新添加,但没有帮助。如何删除这个多余的斜线?

4

3 回答 3

8

通常,额外的斜线不会破坏类似 UNIX 的构建过程。

但是,您确实需要确保armv7架构位于您的构建尝试使用的框架文件中。为此,请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。您的机器上有该框架的多个版本。因此,我将验证您在项目中拥有的框架(即 SystemConfiguration)的路径。

通常,我希望该文件是这样的(针对您使用的操作系统版本进行了调整):

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Lib‌​rary/Frameworks/SystemConfiguration.framework
于 2012-06-08T09:08:59.500 回答
0

org.apache.cordova.network-information我在使用 Cordova 项目和插件时遇到了这个问题大约 8 小时。通过上面的答案和其他几个答案,我被鼓励在Project > Target > Build Phases > Link Binary with LibrariesXcode 的部分中搜索,这是正确的。

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

最后,我使用插件创建了一个新项目,并完全复制了原来的框架星座。现在它正在工作。

结论:

  • 如果可能,创建一个具有必要扩展的新项目并从中复制星座。它可能会有所帮助。
  • 有时,一个库包含太多,所以取消选中它。有时情况正好相反。
  • 要深入挖掘,请SystemConfiguration.framework按照上述出色答案中的说明进行检查。它可能与目标架构不匹配。此外,检查构建中的奇怪字符,包括路径。
于 2014-06-30T14:53:54.430 回答
0

我只是清理并重新启动了xcode,它就可以工作了。

于 2018-08-01T19:52:06.277 回答