当前位置: 首页 > 知识库问答 >
问题:

C是否将google Protobuf2与protobuf3相关?

苏骏
2023-03-14

我有一个使用谷歌Protobuf2的项目。现在我想使用我通过CMake集成的预构建tensorflow C-API。但现在我得到了以下错误:

libPROTOBUF FATAL谷歌/PROTOBUF/存根/common.cc:61]此程序需要3.9.0版的协议缓冲区运行库,但安装的版本是2.6.1。请更新您的库。如果您自己编译了程序,请确保您的头文件与您的链接时间库来自同一版本的协议缓冲区。(版本验证在“bazel-out/k8-选择/bin/tenorflow/core/框架/tensor_shape.pb.cc”中失败。)在抛出一个“google::协议缓冲区f::FatalExctive”的实例后终止调用what():此程序需要3.9.0版的协议缓冲区运行库,但安装的版本是2.6.1。请更新您的库。如果您自己编译了程序,请确保您的头文件来自与链接时库相同版本的协议缓冲区。(版本验证在“bazel-out/k8-opts/bin/tenorflow/core/框架/tensor_shape.pb.cc”中失败。)

有没有简单的方法来修复它?Tensorflow没有与项目的其他部分交换任何消息,所以我可以保留两个版本吗?由于tensorflow原型是一个预先构建的库,因此不可能降级。将项目的其余部分升级到proto3也需要很多努力。我可以使用proto 3.9.0并将syntay=“proto2”添加到所有旧的proto文件中吗?

共有1个答案

鞠边浩
2023-03-14

模式语言和运行时是分开的。更多:如果不添加显式语法标记,proto2将保留默认值,因此严格来说,您根本不需要更改proto文件,尽管它会发出警告,建议您添加语法标记。在这种情况下,可以:只需添加syntax=“proto2”

但是,请注意,在发出的代码中可能会有其他API更改,但这应该相对较小。

 类似资料:
  • 问题内容: 我正在上一门计算机科学课程,课程大纲说要下载Java 1.6。我找不到Java 1.6,所有内容都显示JDK6。当我用Java 1.6进行搜索时,发现此链接: http://java.sun.com/javase/downloads/index.jsp 这就是他所说的Java 1.6吗?我下载了JDK 6 update 17和netbeans 6.8。我会给教员发电子邮件并问他这个问题

  • 我有一个将protobuf写入HDFS的数据管道,现在我需要一种查询该数据的方法。我偶然发现了象鸟和蜂巢,并一直在努力使这个解决方案运行了一天。 3.)启动hive并添加core、hive和hadoop-compat jar 4.)为.proto文件生成java类;用protobuf-java-3.0.0.jar封装并添加到hive中 5.)将protobuf-java-3.0.0.jar添加到h

  • 我最近回答了一个问题,关于当和是指向不同对象/数组的指针时,在C中执行

  • 问题内容: 我了解Oracle Java SE包含不属于OpenJDK的封闭源代码扩展和工具,但是Oracle Java SE JVM是否与OpenJDK JVM相同,或者Oracle在发布为Java SE JVM之前是否对OpenJDK JVM进行了更改? 更新1: 我从JDK7更新项目中找到了一些信息:http : //openjdk.java.net/projects/jdk7u/qanda

  • 我想制作Java应用程序。使用CEF3库。CEF是在任何应用程序中嵌入谷歌Chrome浏览器的库。LWJGL用于编写Java的GL代码。但是在使用CEF之前,基本问题是如何混合C和Java。 > Java main将C部分调用为DLL C部分创建窗口并设置GL上下文 在消息循环中,C再次回调Java部分,以便在Java中完成一些GL工作。 以下测试代码失败,并显示消息: 本机方法中的致命错误:线程

  • 数据类MyObj(Field1:String、Field2:Int、Field3:Int、Field4:String......Field10:Int) 我有一个 如果我这样做: 1)flatMap在那里是并行执行还是顺序执行?2)如果嵌套的flatMap是顺序的,有没有办法让它们像zip一样并行?