您好,我是中国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文件
非常感谢。
答案 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。