我在使用RestKit Library时遇到了另一个问题。
我的目标是为我的公司创建一个特定的库,可以用于所有IOS开发项目。
为此,我创建了一个库,在其中我导入了库RestKIt。 我按照RestKit xCode 4.x安装指南。
然后我创建了一个新项目,在其中我导入了名为“m2mBackEnd”的库。
在我使用该库的测试项目中,我对Oppers执行了以下操作:
1 - 我导入了库“m2mBackEnd”。
2 - 在“Build Settings / Other Linker Flags”中我添加了“-ObjC”。
3 - 在“构建设置/用户头搜索路径”中,我添加了包含所有'的文件夹。 H”。
4 - 在“构建阶段/目标依赖关系”中,我将依赖项添加到“m2mBackEnd”
5 - 在“构建阶段/链接二进制文件库”中我添加了“libm2mBackEnd.a”。
但它不起作用我遇到错误:
undefined symbols for architecture i386:
"_CFHTTPMessageCreateRequest", referenced from:
-[RKRequest addHeadersToRequest] in libm2mBackEnd.a(RKRequest.o)
"_CFHTTPMessageAddAuthentication", referenced from:
-[RKRequest addHeadersToRequest] in libm2mBackEnd.a(RKRequest.o)
"_CFHTTPMessageCopyHeaderFieldValue", referenced from:
-[RKRequest addHeadersToRequest] in libm2mBackEnd.a(RKRequest.o)
"_kCFHTTPAuthenticationSchemeBasic", referenced from:
-[RKRequest addHeadersToRequest] in libm2mBackEnd.a(RKRequest.o)
"_kCFHTTPVersion1_1", referenced from:
-[RKRequest addHeadersToRequest] in libm2mBackEnd.a(RKRequest.o)
"_SCNetworkReachabilityCreateWithAddress", referenced from:
-[RKReachabilityObserver initWithAddress:] in libm2mBackEnd.a(RKReachabilityObserver.o)
"_SCNetworkReachabilityCreateWithName", referenced from:
-[RKReachabilityObserver initWithHost:] in libm2mBackEnd.a(RKReachabilityObserver.o)
"_SCNetworkReachabilityGetFlags", referenced from:
-[RKReachabilityObserver getFlags] in libm2mBackEnd.a(RKReachabilityObserver.o)
"_SCNetworkReachabilitySetCallback", referenced from:
-[RKReachabilityObserver scheduleObserver] in libm2mBackEnd.a(RKReachabilityObserver.o)
"_SCError", referenced from:
-[RKReachabilityObserver scheduleObserver] in libm2mBackEnd.a(RKReachabilityObserver.o)
-[RKReachabilityObserver unscheduleObserver] in libm2mBackEnd.a(RKReachabilityObserver.o)
"_SCErrorString", referenced from:
-[RKReachabilityObserver scheduleObserver] in libm2mBackEnd.a(RKReachabilityObserver.o)
-[RKReachabilityObserver unscheduleObserver] in libm2mBackEnd.a(RKReachabilityObserver.o)
"_SCNetworkReachabilitySetDispatchQueue", referenced from:
-[RKReachabilityObserver scheduleObserver] in libm2mBackEnd.a(RKReachabilityObserver.o)
-[RKReachabilityObserver unscheduleObserver] in libm2mBackEnd.a(RKReachabilityObserver.o)
"_UTTypeCreatePreferredIdentifierForTag", referenced from:
-[NSString(RestKit) MIMETypeForPathExtension] in libm2mBackEnd.a(NSString+RestKit.o)
"_UTTypeCopyPreferredTagWithClass", referenced from:
-[NSString(RestKit) MIMETypeForPathExtension] in libm2mBackEnd.a(NSString+RestKit.o)
"_kUTTagClassFilenameExtension", referenced from:
-[NSString(RestKit) MIMETypeForPathExtension] in libm2mBackEnd.a(NSString+RestKit.o)
"_kUTTagClassMIMEType", referenced from:
-[NSString(RestKit) MIMETypeForPathExtension] in libm2mBackEnd.a(NSString+RestKit.o)
"_xmlNodeGetContent", referenced from:
-[RKXMLParserLibXML parseNode:] in libm2mBackEnd.a(RKXMLParserLibXML.o)
"_xmlNewParserCtxt", referenced from:
-[RKXMLParserLibXML parseXML:] in libm2mBackEnd.a(RKXMLParserLibXML.o)
"_xmlParseMemory", referenced from:
-[RKXMLParserLibXML parseXML:] in libm2mBackEnd.a(RKXMLParserLibXML.o)
"_xmlFreeDoc", referenced from:
-[RKXMLParserLibXML parseXML:] in libm2mBackEnd.a(RKXMLParserLibXML.o)
"_xmlFreeParserCtxt", referenced from:
-[RKXMLParserLibXML parseXML:] in libm2mBackEnd.a(RKXMLParserLibXML.o)
"_xmlFree", referenced from:
-[RKXMLParserLibXML parseNode:] in libm2mBackEnd.a(RKXMLParserLibXML.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我错过了什么吗?或者做错了什么?
是否可以使用RestKit创建库?
感谢您的帮助。
答案 0 :(得分:3)
我希望您此时可以解决此问题,如果没有尝试以下安装步骤
检查您是否完成了自述文件中提到的安装步骤,并添加了其中提到的所有框架工作,以及构建设置中提到的更改
git submodule add git://github.com/RestKit/RestKit.git RestKit
"$(SOURCE_ROOT)/RestKit/Build"
目录中。 不要检查Recursive
复选框。"$(SOURCE_ROOT)/RestKit/Build/$(BUILD_STYLE)-$(PLATFORM_NAME)"
目录
注意:仅当您使用DerivedData NOT 时才需要这样做。-ObjC -all_load
。使用完成按钮关闭编辑器。恭喜,您现在已经完成将RestKit添加到基于Xcode 4的项目中了!
您现在只需要在应用程序的适当位置添加RestKit库的包含。相关的内容包括:
#import <RestKit/RestKit.h>
// And if you are using Core Data...
#import <RestKit/CoreData/CoreData.h>
答案 1 :(得分:0)
尝试将CFNetwork.framework添加到项目的目标中(为我解决了前6个错误)
答案 2 :(得分:0)
安装RestKit的推荐方法是通过CocoaPods包管理器,因为它提供了灵活的依赖关系管理和简单的安装。为了获得最佳效果,建议您使用通过Homebrew安装的Git&gt; = 1.8.0通过CocoaPods&gt; = 0.19.1进行安装。
安装CocoaPods(如果尚未提供):
$ [sudo] gem install cocoapods
$ pod setup
切换到Xcode项目的目录,然后创建并编辑Podfile并添加RestKit:
$ cd /path/to/MyProject
$ touch Podfile
$ edit Podfile
platform :ios, '5.0'
# Or platform :osx, '10.7'
pod 'RestKit', '~> 0.20.0'
# Testing and Search are optional components
pod 'RestKit/Testing', '~> 0.20.0'
pod 'RestKit/Search', '~> 0.20.0'
安装到您的项目中:
$ pod install
从.xcworkspace文件(不是通常的项目文件)中打开Xcode中的项目
$ open MyProject.xcworkspace
请注意,如果安装失败,可能是因为您安装的版本低于CocoaPods所期望的Git版本。请确保您通过执行git --version
运行Git&gt; = 1.8.0。您可以通过执行pod install --verbose
来全面了解安装详细信息。