我试图编译一个使用Tensorflow的c ++程序,但我遇到了一些问题。
基本思想是首先使用bazel生成动态库.so文件并将其传递给g ++。但似乎问题发生在那个阶段之前 - 我的程序首先在tensorflow中包含一个.h文件
DCDevice.isSupported
我认为我将正确的参数传递给了g ++,因为它确实找到了头文件,但它正在抱怨
#include "tensorflow/core/public/session.h"
当我打开device_attributes.pb.h文件时,我看到错误是在这里产生的
../../tools/tensorflow/bazel-genfiles/tensorflow/core/framework/device_attributes.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is
#error This file was generated by a newer version of protoc which is
起初我以为是因为我机器上的原型太旧了;然后我尝试修改PATH,以便它首先找到一个较新的protoc版本(3.2.0),但问题仍然存在;我甚至在没有较旧的protoc的情况下在不同的机器上尝试了同样的事情,但问题仍然存在。
我想知道是否有人之前遇到过类似的问题。谢谢。
答案 0 :(得分:0)
哦,我发现了这个问题......这是因为它包含了一个" google / protobuf / stubs / common.h"文件,它应该使用tensorflow包中的那个,但不知何故,我的PATH中必须有另一个具有相同名称的文件,它具有不同的版本,并设置不同的编译器变量。