(续上篇)
4.4.TensorFlow C++版开发库编译
4.4.1. release编译
4.4.1.1. 编译tensorflow_cc.dll
bazel build --config=opt --define=no_tensorflow_py_deps=true --copt=-DTHRUST_IGNORE_CUB_VERSION_CHECK --copt=-nvcc_options=disable-warnings --local_ram_resources=10240 --local_cpu_resources=3 //tensorflow:tensorflow_cc.dll
4.4.1.2. 编译tensorflow_cc.lib
bazel build --config=opt --define=no_tensorflow_py_deps=true --copt=-DTHRUST_IGNORE_CUB_VERSION_CHECK --copt=-nvcc_options=disable-warnings --local_ram_resources=10240 --local_cpu_resources=3 //tensorflow:tensorflow_cc.lib
4.4.1.3. 编译include
bazel build --config=opt --define=no_tensorflow_py_deps=true --copt=-DTHRUST_IGNORE_CUB_VERSION_CHECK --copt=-nvcc_options=disable-warnings --local_ram_resources=10240 --local_cpu_resources=3 //tensorflow:install_headers
4.4.2. debug编译
编译时,通过添加”-c dbg”来实现debug版的编译。编译过程中遇到问题较多,未能成功编译。
bazel build -c dbg --config=opt --define=no_tensorflow_py_deps=true --copt=-DTHRUST_IGNORE_CUB_VERSION_CHECK --copt=-nvcc_options=disable-warnings --local_ram_resources=10240 --local_cpu_resources=3 //tensorflow:tensorflow_cc.dll
4.4.3.编译结果
编译结果位于bazel_bin中,bazel_bin实际是一个软链接,真实数据存储在C:\Users\stone\_bazel_stone\7t3zwoz4\execroot\org_tensorflow
将编译结果整理到Tensorflow的安装目录下:
4.4.4. 【坑】C++开发时报缺少外部符号错误的解决办法
1>main.obj : error LNK2001: 无法解析的外部符号 "public: __cdecl tensorflow::ops::Subtract::Subtract(class tensorflow::Scope const &,class tensorflow::Input,class tensorflow::Input)" (??0Subtract@ops@tensorflow@@QEAA@AEBVScope@2@VInput@2@1@Z)
1>main.obj : error LNK2001: 无法解析的外部符号 "public: __cdecl tensorflow::ops::Squeeze::Squeeze(class tensorflow::Scope const &,class tensorflow::Input)" (??0Squeeze@ops@tensorflow@@QEAA@AEBVScope@2@VInput@2@@Z)
1>main.obj : error LNK2001: 无法解析的外部符号 "public: __cdecl tensorflow::ops::DecodeGif::DecodeGif(class tensorflow::Scope const &,class tensorflow::Input)" (??0DecodeGif@ops@tensorflow@@QEAA@AEBVScope@2@VInput@2@@Z)
1>main.obj : error LNK2001: 无法解析的外部符号 "public: __cdecl tensorflow::ops::TopK::TopK(class tensorflow::Scope const &,class tensorflow::Input,class tensorflow::Input)" (??0TopK@ops@tensorflow@@QEAA@AEBVScope@2@VInput@2@1@Z)
1>main.obj : error LNK2001: 无法解析的外部符号 "public: __cdecl tensorflow::ops::ExpandDims::ExpandDims(class tensorflow::Scope const &,class tensorflow::Input,class tensorflow::Input)" (??0ExpandDims@ops@tensorflow@@QEAA@AEBVScope@2@VInput@2@1@Z)
1>main.obj : error LNK2001: 无法解析的外部符号 "public: __cdecl tensorflow::ops::ResizeBilinear::ResizeBilinear(class tensorflow::Scope const &,class tensorflow::Input,class tensorflow::Input)" (??0ResizeBilinear@ops@tensorflow@@QEAA@AEBVScope@2@VInput@2@1@Z)
1>main.obj : error LNK2001: 无法解析的外部符号 "class tensorflow::Output __cdecl tensorflow::ops::Const(class tensorflow::Scope const &,struct tensorflow::Input::Initializer const &)" (?Const@ops@tensorflow@@YA?AVOutput@2@AEBVScope@2@AEBUInitializer@Input@2@@Z)
1>main.obj : error LNK2001: 无法解析的外部符号 "public: __cdecl tensorflow::ops::DecodePng::DecodePng(class tensorflow::Scope const &,class tensorflow::Input,struct tensorflow::ops::DecodePng::Attrs const &)" (??0DecodePng@ops@tensorflow@@QEAA@AEBVScope@2@VInput@2&#