【问题标题】:Thrift framework for iPhoneiPhone 的 Thrift 框架
【发布时间】:2010-09-01 18:10:17
【问题描述】:

我目前正试图让我的目标 c 生成文件在我的 iPhone 项目中编译。基本上它一直告诉我以下四个导入没有这样的目录:

Thrift/TProtocol.h 节俭/TApplicationException.h 节俭/TProtocolUtil.h Thrift/TProcessor.h

我正在遵循 Thrift wiki 上的所有说明,并已在 XCode 中下载并编译了 Thrift 框架,但没有特定于 iPhone 开发的信息。我几乎可以肯定这是 iPhone 项目特有的问题,因为如果我在 XCode 中创建一个新的命令行项目,我可以很好地导入这些文件。

【问题讨论】:

  • 我找到了一个名为 Thrift.framework 的文件夹,并将其包含在目标的链接库中。现在找到导入但链接它们没有问题。默认情况下,Thrift.framework 项目为 x86_64 编译。如果为模拟器构建,它告诉我它必须是 i386,我将 Thrift 概述更改为。如果我正在为设备进行编译,它会告诉我它必须在 arm 中,而我无法在其中编译 Thrift 项目。无论哪种方式(在 64、386、模拟器或设备中),我都会得到以下信息:跨度>
  • 未定义符号:“_OBJC_CLASS_$_TProtocolUtil”,引用自:objc-class-ref-to-TProtocolUtil in gen_1.o “_OBJC_CLASS_$_TApplicationException”,引用自:objc-class-ref-to- gen_1.o ld 中的 TProtocolUtil:未找到符号 collect2:ld 返回 1 个退出状态

标签: iphone objective-c thrift


【解决方案1】:

在保留了某种巫师的服务后,我想出了如何让 Thrift 与 iPhone/iPad 一起工作(或者至少让它编译好)。

首先,您要使用此命令而不是从 wiki 获取 Objective-c 文件:

svn co http://svn.apache.org/repos/asf/incubator/thrift/trunk/lib/cocoa/src/ thrift-cocoa

然后,通过转到 New Project,选择 Framework & Library 和 Cocoa Framework 来创建一个新的 Xcode 项目。单击创建并将其保存在不错的位置。右键单击目标并选择添加 -> 新目标。选择 Cocoa Touch,然后选择静态库。给它起个好听的名字。在 info 中转到目标的 Build 选项卡并将 Base SDK 更改为 iPhone Device(我使用的是 3.2,但您可以使用任何版本)并将 Architectures 更改为 Standard (armv6 armv7) 或 Optimized (armv7)。在 General 选项卡下添加 Foundation 和 Cocoa 框架。

将您从 svn 存储库中获得的所有文件和文件夹拖到项目中的 Classes 文件夹中。选中复制项目框并选中两个目标旁边的框。分别从静态库的 Copy Headers 和 Compile Sources 文件夹中删除 TSocketServer.h 和 .m。您现在可以构建静态库(和可选的框架)。

打开您要在其中使用 Thrift 的项目,然后转到目标的“信息”中的“常规”选项卡。将您刚刚创建的静态库添加到链接库列表中。它应该命名为 libYOUR_TARGET_NAME.a。在 build 选项卡下,转到 Header Search Paths 并将路径添加到您刚刚创建的 Thrift 项目并选中递归框。

最后,您只需要更改 Thrift 生成的代码中的导入语句,只需删除括号并用引号替换它们即可。您现在可以再次构建您的 iPhone 项目。

【讨论】:

    【解决方案2】:

    尝试将这些 .h 文件添加到您的 Xcode 项目中。

    【讨论】:

    • 只需从 XCode 的 Thrift.framework 项目中提取头文件并将它们放入我的项目中?我会尝试一下,但我不明白为什么我首先要构建框架。
    猜你喜欢
    • 2013-04-08
    • 2014-01-06
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 2011-08-14
    相关资源
    最近更新 更多