我在使用RestKit库时遇到另一个问题。
我的目标是为我的公司创建一个特定的库,该库可用于所有IOS开发项目。
为此,我创建了一个库,在其中导入了RestKIt库。
我遵循了RestKit xCode 4.x的安装指南。
因此,我然后创建了一个新项目,在其中导入了名为“ m2mBackEnd”的库。
在使用该库的测试项目中,我执行了以下操作:
1-我导入了库“ m2mBackEnd”。
2-在“构建设置/其他链接器标志”中,添加了“ -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创建库?
谢谢您的帮助。
最佳答案
我希望您这次可以解决该问题,如果不尝试以下安装步骤
检查您是否按照自述文件中的说明完成了安装步骤,并添加了其中提到的所有框架以及“构建”设置中提到的更改
Xcode 4.x(Git子模块)
添加子模块:git submodule add git://github.com/RestKit/RestKit.git RestKit
在Xcode中打开要添加RestKit的项目。
关注您的项目,然后选择“查看”菜单>“导航器”>“项目”,以显示项目文件列表。
从Finder中拖动RestKit.xcodeproj文件,并将其放在“ .xcodeproj”上。
单击左侧边栏中的项目名称,以在窗口的右窗格中打开项目设置视图。
在中间窗格中,您将看到项目的PROJECT和TARGETS标头。单击您的项目名称,然后在顶部选择“构建设置”以打开整个项目的“构建设置”编辑器。
找到标题搜索路径设置。双击并添加一个新条目。将搜索路径添加到已添加到项目中的"$(SOURCE_ROOT)/RestKit/Build"
目录。请勿选中Recursive
复选框。
找到“库搜索路径”设置。双击并添加一个新条目。将搜索路径添加到已添加到项目中的"$(SOURCE_ROOT)/RestKit/Build/$(BUILD_STYLE)-$(PLATFORM_NAME)"
目录。
注意:仅在不使用DerivedData的情况下才需要这样做。
找到“其他链接器标志”条目,然后双击它。使用+按钮添加新条目,然后输入-ObjC -all_load
。使用“完成”按钮关闭编辑器。
在编辑器窗格中间的TARGETS列表中找到要添加RestKit的目标。选择它以在窗口的右窗格中打开目标设置编辑器。
单击窗口顶部的“构建阶段”选项卡以打开“构建阶段”编辑器。
单击“目标依赖关系和带有库的二进制链接”项旁边的显示三角形。
在“目标依赖项”部分中,单击+按钮以打开“目标选择”表。单击RestKit聚合目标(它将具有靶心图标),然后单击“添加”按钮以创建依赖项。
在“使用库链接二进制文件”部分中,单击+按钮以打开“库选择”表。在这里,我们需要指示目标链接所有必需的RestKit库和几个系统库。选择以下每个项目(一次或按住Command键一次选择所有项目),然后单击“添加”按钮:
libRestKitCoreData.a-可选。仅在使用核心数据时才需要。
libRestKitJSONParserJSONKit.a
libRestKitNetwork.a
libRestKitObjectMapping.a
libRestKitSupport.a
CFNetwork.framework
CoreData.framework-可选。仅在使用核心数据时才需要
MobileCoreServices.framework
SystemConfiguration.framework
libxml2.dylib-可选。仅当您要从XML有效内容进行映射并将libRestKitXMLParserLibxml.a链接到您的应用程序时才需要。
在继续之前,请验证所有库都显示在“与库链接二进制文件”部分中。
恭喜,您现在已完成将RestKit添加到基于Xcode 4的项目中!
现在,您只需要在应用程序中的适当位置添加RestKit库的包含项即可。相关内容包括:
#import <RestKit/RestKit.h>
// And if you are using Core Data...
#import <RestKit/CoreData/CoreData.h>
关于objective-c - 创建包含RestKit库的静态库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8054349/