首页 > 解决方案 > 通过c++ tensorflow接口获取模型的输入输出节点信息

问题描述

以下代码在 tensorflow 1.13.1 下编译失败:

GraphDef graph_def;
status = ReadBinaryProto(Env::Default(), modelPath, &graph_def);
if (!status.ok()) {
     std::cerr << "ReadBinaryProto Status:" << status.ToString() << endl;
     return -1;
}
cout << "success." << endl;
int a = graph_def.node_size();

int i;
for (i = 0; i < a; i++)
{
    graph_def.node(i).PrintDebugString();
}
return -1;

编译错误信息

未解析的外部符号“public:class google::protobuf::internal::LogMessage & __cdecl google::protobuf::internal::LogMessage::operator<<(char const *)”(??6LogMessage@internal@protobuf@google @@QEAAAAEAV0123@PEBD@Z)
未解析的外部符号“public: void __cdecl google::protobuf::internal::LogFinisher::operator=(class google::protobuf::internal::LogMessage &)” (??4LogFinisher@ internal@protobuf@google@@QEAAXAEAVLogMessage@123@@Z)
未解析的外部符号“public: void __cdecl google::protobuf::Message::PrintDebugString(void)const” (?PrintDebugString@Message@protobuf@google@@QEBAXXZ)
未解析的外部符号“public: __cdecl google::protobuf::internal::LogMessage::LogMessage(enum google::protobuf::LogLevel,char const *,int)” (??0LogMessage@internal@protobuf@google@@QEAA @W4LogLevel@23@PEBDH@Z)
未解析的外部符号 "public: __cdecl google::protobuf::internal::LogMessage::~LogMessage(void)" (??1LogMessage@internal@protobuf@google@@QEAA@XZ)

以上所有操作都出现在visual studio 2015下。

标签: c++tensorflow

解决方案


将编译错误消息中建议的代码添加到链接中文件的末尾。
待修改文件链接: https ://github.com/guikarist/tensorflow-windows-build-script/blob/master/patches/tf_exported_symbols_msvc.lds
**在此处输入图片描述**

然后重新编译张量流。
整个编译过程参考以下链接。
https://blog.csdn.net/atpalain_csdn/article/details/97945536


推荐阅读