【发布时间】:2021-07-14 18:49:18
【问题描述】:
我正在尝试在我的 macbook 上为 grpc 构建 .proto 文件的编译环境。我当前的本地 protobuf 版本在我的 iOS 项目中是 3.11.4,但最新的 grpc 直接到 protobuf 3.15.8。由于某种原因我自定义了我的protobuf代码,所以我不想升级它,编译环境也是如此。
我的问题是:我可以在安装 grpc 环境的同时保留我的本地旧版本 protobuf(3.11.4) 环境吗?
当我使用pod install生成xx.pbobjc.h xx.pbobjc.m xx.pbrpc.h xx.pbrpc.m时,文件显示错误
#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources.
当我像这样在终端中使用 cmd 时
protoc -I . --objc_out=./output --grpc_out=./output --plugin=protoc-gen-grpc=grpc_objective_c_plugin search.proto
会了
dyld: Library not loaded: /usr/local/opt/protobuf/lib/libprotoc.26.dylib
Referenced from: /Users/rose/Documents/Code/JobProjects/grpcProto/grpc_objective_c_plugin
Reason: image not found
看起来它已链接到更高版本的 protobuf。
这是我的 protobuf 版本
$ protoc --version
libprotoc 3.11.4
'brew install grpc'依赖于最新的protobuf(3.15.8),我想我应该克隆grpc并自己构建环境,所以我这样做了,但似乎grpc仍然没有与我的旧protobuf链接我尝试从 .proto 文件生成代码,有人可以告诉我如何实现吗?我说清楚了吗?如果我不这样做,请告诉我
【问题讨论】:
-
这将是特定于语言/框架的;在 Java 中有效的东西可能在 C 中无效,在 C# 中可能有效,在 Python 中可能无效。你可以说得更详细点吗?实际的 RPC 和 marahaller 核心并没有内在联系,但是实现中是否存在这种纯度是特定于实现的
-
@MarcGravell 抱歉,我没有说清楚,这不是关于项目,而是关于编译环境,我需要它来从 .proto 文件生成 Objective-c 代码。如果你问的话,我在我的 iOS 项目中使用了 Objective-c。谢谢
标签: ios objective-c protocol-buffers grpc