关于 iPhone 上的 ProtocolBuffers

Posted

技术标签:

【中文标题】关于 iPhone 上的 ProtocolBuffers【英文标题】:About ProtocolBuffers on iPhone 【发布时间】:2011-04-13 16:17:09 【问题描述】:

嗨,我是一名中国 ios 工程师。

我正在尝试在 iphone 上运行协议缓冲区,我从 google 代码下载了metasyntactic project,并按照您的介绍进行操作。

但是当我在终端中输入 protoc 命令时出现错误,例如:

我的命令:> protoc --proto_path=proto/src --objc_out=proto/build proto/src/common.proto

错误信息是 :protoc-gen-objc: program not found or is not executable --objc_out: protoc-gen-objc: 插件失败,状态码为 1。

然后从谷歌代码中获得一个项目并编译一个 protoc-gen-objc,然后我像这样运行 protoc: protoc protoc-gen-objc --proto_path=geo3 --proto_path=src --objc_out=build/gen src/geo3.proto

最后我得到了这个错误信息:

protoc-gen-objc:文件不在使用--proto_path(或-I)指定的任何路径中。您必须指定包含此文件的 --proto_path。请注意,proto_path 必须是 .proto 文件名的精确前缀—— protoc 太笨了,无法确定两个路径(例如绝对路径和相对路径)何时相等(这比您想象的要难)。

那么我应该如何修复它,并获取 .pb.m 文件

非常感谢。

【问题讨论】:

【参考方案1】:

这个帖子好像很久了,我在使用https://github.com/booyah/protobuf-objc这里的包时遇到了同样的问题。

从google安装官方protobuf包并准备好booyah的包后,你应该手动导出protoc-gen-objc的路径,对我来说它位于/your install path/src/compiler/,然后调用protoc为您生成 .h 和 .m 的命令。

如果这与您的情况相同,则可以。希望对您和其他人有所帮助。

【讨论】:

【参考方案2】:

我遇到了同样的问题。我收到消息的原因是因为我使用的是 C++ protoc 可执行文件。您必须从官方 google 网站制作 protobuf。转到protoc所在的objective-c端口目录并执行以下操作:

./protoc --proto_path=proto/src --objc_out=proto/build proto/src/common.proto

这将确保您在当前目录中使用objective-c protoc。

【讨论】:

以上是关于关于 iPhone 上的 ProtocolBuffers的主要内容,如果未能解决你的问题,请参考以下文章

关于 iphone 上的自定义 UItextField 包括代表

关于iphone的双重验证的虚伪本质

iPhone:关于 NSAutoreleasePool 的困惑

iPhone上的TCP打孔

禁止 iPhone 上的基于位置的广告

关于 iPhone 方向和固件:始终强制方向