2

我正在尝试将框架添加到我的项目中。我通过 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)

一段时间后,框架在 Build Phases 选项卡中恢复为黑色文本,但代码仍无法编译。这些文件在文件夹中都是完整的,并且位置是“相对于 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 的行为就像它们不存在一样。

4

1 回答 1

0

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

截屏

于 2012-06-11T21:27:56.067 回答