【问题标题】:Added frameworks not detected by XCode添加了 XCode 未检测到的框架
【发布时间】:2012-06-14 15:58:09
【问题描述】:

我正在尝试将框架添加到我的项目中。我通过 Build Phases -> Link Binary With Libraries -> "+ button" 添加它们。添加它们后,它们会显示为红色,如果我尝试编译我的代码,我会得到:

Undefined symbols for architecture i386:
"_OBJC_CLASS_$_ASIHTTPRequest", referenced from:
objc-class-ref in LoginViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

一段时间后,框架在“构建阶段”选项卡中恢复为黑色文本,但代码仍无法编译。这些文件在文件夹中都是完整的,并且位置是“相对于 SDK”,就像所有其他工作框架一样。我之前遇到过这个问题,当时有问题的框架也保存在我的项目文件夹中,但这次不是这样。我已经阅读了关于这个主题的许多其他主题,但它们似乎是关于早期版本的 XCode。非常感谢您的帮助。

编辑:我正在尝试添加 MobileCoreServices 和 CFNetwork 框架。 LoginViewController 是我项目的一部分。

编辑:无论是否包含框架,我都有同样的错误。我认为这是因为 XCode 在我包含它们之后由于某种原因找不到框架。这是我使用引用框架的类的地方。这是来自 LoginViewController

__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL: url];
[request setCompletionBlock:^{
    NSLog(@"File downloaded.");
    //NSData *data = [request responseData];
    //do stuff with data     
}];
[request setFailedBlock:^{
    NSError *error = [request error];
    NSLog(@"Error downloading file: %@", error.localizedDescription);
}];
[request startAsynchronous]; 

我正在尝试进行异步服务器调用以获取数据。

编辑:好的,事实证明我的项目中某些 .m 文件的目标成员资格没有被检查。修复此问题后,我仍然有类似的问题。这是我的新错误

Undefined symbols for architecture i386:
"_kReachabilityChangedNotification", referenced from:
  +[ASIHTTPRequest registerForNetworkReachabilityNotifications] in ASIHTTPRequest.o
  +[ASIHTTPRequest unsubscribeFromNetworkReachabilityNotifications] in ASIHTTPRequest.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我对此进行了研究,唯一的原因似乎是缺少 MobileCoreServices 和 CFNetwork 框架。这就是我认为最初的问题引起的。我包含了框架,但 XCode 的行为就像它们不存在一样。

【问题讨论】:

  • 您要添加什么框架? LoginViewController 文件是来自您的项目还是来自框架?
  • @golergka 我编辑了这个问题来回答你
  • 添加框架后是否立即出现问题?如果从项目中删除框架,它会消失吗?如果您在 LoginViewController 中引用该框架,您能否在问题中包含您执行此操作的点?
  • @golergka 我再次编辑了问题。
  • @user1378744 当您向您的应用程序添加框架时,请检查以下内容 1) 为任何添加的文件夹创建文件夹引用。然后 2) 确保“未选择将项目复制到目标组的文件夹:)

标签: iphone objective-c xcode frameworks build


【解决方案1】:

他们已更改默认设置,因此不会添加目标成员资格。选择每个 .m 文件,然后在右侧导航器中选择“目标成员资格”。请务必选中您正在使用的每个文件的复选框。

【讨论】:

  • 我没有选中该复选框。检查我所有的 .m 文件后,我仍然遇到类似的问题。生病编辑问题。
猜你喜欢
  • 2017-10-13
  • 2021-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-06
  • 2018-03-02
  • 2014-05-05
  • 1970-01-01
相关资源
最近更新 更多