创建包含 RestKit 库的静态库
我在使用 RestKit 库时遇到另一个问题。
我的目标是为我的公司创建一个特定的库,可用于所有 IOS 开发项目。
为此,我创建了一个库,在其中导入了 RestKIt 库。 我遵循 RestKit xCode 4.x 的安装指南。
因此,我创建了一个新项目,在其中导入了名为“m2mBackEnd”的库。
在我使用该库的测试项目中,我做了 Oppers 以下操作:
1 - 我导入了库“m2mBackEnd”。
2 - 在“构建设置/其他链接器标志”中,我添加了“-ObjC”。
3 - 在“构建设置/用户标题搜索路径”中,我添加了包含所有 '.哈。
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 创建库?
感谢您的帮助。
I have another problem in my use of RestKit Library.
My goal is to create a specific library for my company, which can be used for all IOS development projects.
For this I created a library in which I imported the library RestKIt.
I followed the installation guide for RestKit xCode 4.x.
So I then created a new project in which I imported my library named "m2mBackEnd".
In my test project that uses the library, I did Oppers the following:
1 - I imported the library "m2mBackEnd".
2 - In "Build Settings / Other Linker Flags" I added "-ObjC".
3 - In "Build Settings / User Header Search Paths" I added the folder that contains all '. h'.
4 - In "Build Phases / Target Dependencies" I added the dependency to "m2mBackEnd"
5 - In "Build Phases / Link Binary With Libraries" I added "libm2mBackEnd.a".
But it does not work I encounter errors:
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)
Do I miss something? Or done something wrong?
Is it possible to create a library using RestKit?
Thank you for your help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我希望您此时已经解决了该问题,如果没有尝试以下安装步骤,
请检查您是否完成了自述文件中提到的安装步骤,并添加了其中提到的所有框架,以及中提到的更改构建设置
Xcode 4.x(Git 子模块)
git submodule add git://github.com/RestKit/RestKit.git RestKit
"$(SOURCE_ROOT)/RestKit/Build"
目录。 请勿选中递归
复选框。“$(SOURCE_ROOT)/RestKit/Build/$(BUILD_STYLE)-$(PLATFORM_NAME)”
目录。注意:仅当您不使用 DerivedData 时才需要这样做。
-ObjC -all_load
。使用完成按钮关闭编辑器。恭喜,您现在已完成将 RestKit 添加到基于 Xcode 4 的项目中!
现在,您只需在应用程序中的适当位置添加 RestKit 库的包含内容即可。相关内容包括:
I hope you would have resolved the issue by this time, If not try the below installation steps
Check whether you completed installation steps as mentioned in the read me file, and added all the frame work mentioned in it, as well as changes mentioned in the Build setting
Xcode 4.x (Git Submodule)
git submodule add git://github.com/RestKit/RestKit.git RestKit
"$(SOURCE_ROOT)/RestKit/Build"
directory you have added to your project. DO NOT check theRecursive
checkbox."$(SOURCE_ROOT)/RestKit/Build/$(BUILD_STYLE)-$(PLATFORM_NAME)"
directory you have added to your project.NOTE: This is only necessary if you are NOT using DerivedData.
-ObjC -all_load
. Dismiss the editor with the Done button.Congratulations, you are now done adding RestKit into your Xcode 4 based project!
You now only need to add includes for the RestKit libraries at the appropriate places in your application. The relevant includes are:
尝试将 CFNetwork.framework 添加到项目的目标中(为我解决了前 6 个错误)
Try Adding CFNetwork.framework to your project's target (resolved the first 6 errors for me)
安装 RestKit 的推荐方法是通过 CocoaPods 包管理器,因为它提供灵活的依赖管理和非常简单的安装。为了获得最佳效果,建议您通过 CocoaPods >= 0.19.1 使用 Git 安装 >= 1.8.0 通过 Homebrew< 安装/a>.
安装 CocoaPods(如果尚未可用):
更改到 Xcode 项目的目录,然后创建并编辑 Podfile 并添加 RestKit:
安装到项目中:
从 .xcworkspace 文件(不是通常的项目文件)在 Xcode 中打开项目
请注意如果您的安装失败,可能是因为您安装的 Git 版本低于 CocoaPods期待。请通过执行
git --version
确保您运行的 Git >= 1.8.0。您可以通过执行 pod install --verbose 来全面了解安装详细信息。The recommended approach for installing RestKit is via the CocoaPods package manager, as it provides flexible dependency management and dead simple installation. For best results, it is recommended that you install via CocoaPods >= 0.19.1 using Git >= 1.8.0 installed via Homebrew.
Install CocoaPods if not already available:
Change to the directory of your Xcode project, and Create and Edit your Podfile and add RestKit:
Install into your project:
Open your project in Xcode from the .xcworkspace file (not the usual project file)
Please note that if your installation fails, it may be because you are installing with a version of Git lower than CocoaPods is expecting. Please ensure that you are running Git >= 1.8.0 by executing
git --version
. You can get a full picture of the installation details by executingpod install --verbose
.