我正在尝试将框架添加到我的项目中。我通过Build Phases添加它们 - >链接二进制文件库 - > “+按钮”。当它们被添加时,它们显示为红色,如果我尝试编译我的代码,我得到:
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就像它们不存在一样。
答案 0 :(得分:0)
他们更改了默认值,因此不会添加目标成员资格。选择每个.m文件,然后在右侧导航器中选择“目标成员资格”。请务必选中您正在使用的每个文件的复选框。