[TensorFlow, C++, Visual Studio, Windows] TensorFlow C++ 如何編譯與解決BUG (How to build Tensorflow C++ API with Visual Studio and solve BUG)

主要環境 : Windows, TensorFlow, C++, Visual Studio

安裝流程簡單說一下,網路有很多資料,都差不多。

以下為我安裝的各版本,只能說版本真的很重要,要去看文件是否有相通,版本可看
版本對應查詢
  1. TensorFlow v1.10
  2. Python v3.5
  3. Visual Studio v2015
  4. Cmake v3.12.0
  5. SWIG v3.0.12
  6. Git v2.20.1
首先先去Github下載對應的版本TensorFlow,記住不要錯...發生別的問題請自行解決。

接著CMake配置如圖,tensorflow的勾選部份自己斟酌吧,後來我有增加打勾tensorflow_GRPC_SUPPORT,網路上的人不推薦,這就看各位吧 :


接著Open Project,進入VS2015編譯,接著我只講我遇到的BUG與解法,沒遇過的別問我,我也不想碰到。

1.找不到 device_attributes.pb_text.h
個人解法:

  • 工具
  • 專案與方案
  • 建置並執行
  • 設置為1為平行專案組件的最大數目


2.找不到grpc/grpcpp.h
個人解法:

  • 直接git clone https://github.com/grpc/grpc.git
  • 將噴錯的專案右鍵"屬性"
  • c/c++
  • 其他include目錄
  • 增加clone下載的grpc\include


3.噴c_api.cc.obj有問題,從錯誤去看,看內容是有關WorkerCacheInterface之類的,我判斷是跟沒有弄到/tensorflow/core/distributed_runtime可能有些許關係,再往下查發現這跟grpc套件可能有關。

  • 因此我重新使用CMake
  • 把tensorflow_ENABLE_GRPC_SUPPORT打勾
  • 把解法二的include增加都拿掉
  • 重新編譯
  • 成功產生tensorflow.lib/dll


4.fatal error LNK1181: 無法打開輸入文件“\pywrap_tensorflow_internal.lib”
個人解法 :

  • 將 _beam_search_ops、_gpu_ops、_lstm_ops、_nearest_neighbor_ops、_periodic_resample_op,以上五個專案右鍵"屬性"
  • 連結器
  • 一般
  • 其他程式庫目錄
  • 增加$(SolutionDir)$(Configuration);
  • 最後會顯示$(SolutionDir)$(Configuration);%(AdditionalLibraryDirectories)


心得 : 不得不使用TensorFlow的C++版,Python的效能大家也知道,因此鐵定要踩這個坑,網路上這方面的資料又不多又雜,有人說不要打勾GRPC_SUPPORT,因為很容易出錯,我就真的沒打勾,最後就是因為我沒打勾,噴了一堆錯,只能靠經驗一步一步解開,不得不說...自己又變厲害了,可喜可賀...

留言

這個網誌中的熱門文章

[Ubuntu, Docker, Docker Swarm] Docker Swarm 建置 Jupyter Notebook 流程

[Docker Swarm] Docker Swarm 指令