使用 tensorflow的 C++ 示例工程

工程文件为:

https://blog.csdn.net/jiugeshao/article/details/79144438

按图配置完成后,拷贝tensorflow.lib及tensorflow.dll到工程目录中,并将.lib文件填入”属性->配置属性->链接器->输入->附加依赖项”。

release版本问题如下:

一、编译过程中致命错误:包含文件深度太深 ==1024

原因:third_party\eigen3路径中的tensor文件中第一句可以解释为包含了自己,有二义性。

解决方法:VC++路径中不能包含third_party\eigen3这个路径,替换为\tensorflow\contrib\cmake\build\eigen\src\eigen

二、有十个函数的定义找不到,好像与protobuf工程有关

解决方案:将生成的protobuf.obj引入工程;

方法如下:

(一)添加protobuf.obj文件

1、工程名称上右键“添加->新建筛选器”,重命名为“Object Libraries”(注:为了与其他工程保持一致)

2、在新筛选器中添加现有项“\tensorflow\contrib\cmake\build\tf_core_lib.dir\Release\protobuf.obj”

缺点:obj文件的版本必须与当前工程一致,如果不一致会出现下面的第二个问题

(二)添加libprotoc.lib文件

在protobuf工程的release文件夹找到该文件后,添加到附加依赖项即可。

debug时出现错误如下:

一、c:\program files (x86)\microsoft visual studio 14.0\vc\include\xutility(2458): error C4996: 'std::copy_n::_Unchecked_iterators::_Deprecate': Call to 'std::copy_n' with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'

解决方案:打开当前项目的属性页,选择“配置属性->C/C++->预处理器”,在预处理器定义中加上_SCL_SECURE_NO_WARNINGS,多个属性间以分号分隔 注:该项设置对整个工程生效

二、protobuf.obj : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”(ConsoleApplication1.obj 中)

原因:怀疑由于protobuf.obj文件是release版本与工程不匹配导致的

解决方法:重新生成debug版本的protobuf.obj

猜你喜欢

转载自blog.csdn.net/weareu/article/details/81107049