iOS架构i386的未定义符号:“iOS”_“kUTTypeImage”;
我正在将UIImagePickerController添加到我的应用程序中,当我开始编译时,会出现上述错误。我找到了一个解决方案,因此: 查找符号(kUTTypeImage)并找到它应该存在的图像/库(在本例中为MobileCoreServices.framework)。然后将二进制文件链接到该框架 问题是,我不知道如何实现它。如何查找符号,然后将其链接到框架 应该注意的是,我已经导入了MobileCoReserves框架。以下是相关代码:iOS架构i386的未定义符号:“iOS”_“kUTTypeImage”;,ios,xcode,uiimagepickercontroller,linker-errors,Ios,Xcode,Uiimagepickercontroller,Linker Errors,我正在将UIImagePickerController添加到我的应用程序中,当我开始编译时,会出现上述错误。我找到了一个解决方案,因此: 查找符号(kUTTypeImage)并找到它应该存在的图像/库(在本例中为MobileCoreServices.framework)。然后将二进制文件链接到该框架 问题是,我不知道如何实现它。如何查找符号,然后将其链接到框架 应该注意的是,我已经导入了MobileCoReserves框架。以下是相关代码: Undefined symbols for arch
Undefined symbols for architecture i386:
"_kUTTypeImage", referenced from:
-[ViewController receiveNotification:] in ViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
您只需添加框架,然后将其导入项目(或者更确切地说,导入目标)。在导航器中,单击项目,然后选择一个目标。然后转到buildphases选项卡,如果尚未展开,则展开linkbinary With Libraries。然后添加MobileCoreServices.framework。在要使用kUTTypeImage的文件中,添加此导入:
#导入
请注意,您使用的是尖括号(),而不是通常使用的引号。如果注意到这一点,我已经在我的viewcontroller上添加并导入了框架。请参阅上面的编辑。您是否遵循了这两个步骤(先添加,然后导入)?那么它应该可以毫无问题地工作。确认MobileCoreServices位于带有库的链接二进制文件列表中。请参阅问题中添加的屏幕截图(而不是错误标记)。你看到这篇文章的链接了吗。显然,这有时会有问题。在另一篇文章中,解决方案正是我所说的。我注意到的是,您已经将库添加到单元测试目标(IntegrationSiteReportT…)中。在左侧的方案选择器中,似乎正在构建常规目标。您是否将框架添加到两个目标中?如果你这样做了,我不知道为什么它不起作用……哦,看在上帝的份上,是的,我就是这么做的。为了一双新鲜的眼睛。谢谢你的帮助。在这里写一个答案,这样我就可以相信你了。
if ([UIImagePickerController isSourceTypeAvailable:
UIImagePickerControllerSourceTypeCamera]) {
UIImagePickerController* myCamera = [[UIImagePickerController alloc] init];
myCamera.delegate = self;
myCamera.sourceType = UIImagePickerControllerSourceTypeCamera;
myCamera.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeImage, nil];
myCamera.allowsEditing = NO;
[self presentModalViewController:myCamera animated:YES];
}