关于iPhone上的ProtocolBuffers

时间:2011-04-13 16:17:09

标签: iphone protocol-buffers

您好,我是中国iOS工程师。

我试图在iphone上运行协议缓冲区,我从谷歌代码下载metasyntactic project,并按照你的介绍。

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

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

并且错误消息是:protoc-gen-objc:程序未找到或不可执行                                               --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文件

非常感谢。

2 个答案:

答案 0 :(得分:2)

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

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

如果这与你的情况相同,那就有效。希望它对你和他人有所帮助。

答案 1 :(得分:1)

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

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

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