我在使用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/

10-13 05:42