1. 程式人生 > >Tensorflow之編譯window平臺下基於c/c++使用tensorflow

Tensorflow之編譯window平臺下基於c/c++使用tensorflow

最近在考慮將tensorflow的工程遷移到window平臺下進行,由於linux和mac平臺在官網上有對應的c/c++介面的安裝說明,而window平臺則需要自己編譯。所以現將編譯過程記錄如下:

一、環境準備

1. vs2015

2. swigwin-3.0.12。下載連結為  http://swig.org/download.html  。下載之後解壓縮即可。

3. Cmake  , 下載連結為:https://cmake.org/download/  。下載之後解壓縮即可,但是要配置環境變數,把對應的cmake.exe檔案放入對應的系統路徑中。

4. git  和python

5. 在環境變數中將C:\Windows\Microsoft.NET\Framework64\v4.0.30319加入環境變數(為了使用MSBuild)

二、編譯步驟(Release)

1. 首先git下tensorflow的原始碼,具體地址可參見源原始碼編譯那篇部落格

2. 在tensorflow/tensorflow/contrib/cmake/目錄下建立build

3. 在build目錄下面執行cmake .. -A x64 -DCMAKE_BUILD_TYPE=Release -DSWIG_EXECUTABLE=D:/swigwin-3.0.12/swig.exe

-DPYTHON_EXECUTABLE=D:/Python/Python35/python.exe  -DPYTHON_LIBRARIES=D:/Python/Python35/libs/python35.lib 

4. 執行

set PreferredToolArchitecture = x64

 MSBuild /p:Configuration=Release ALL_BUILD.vcxproj

執行成功之後會在對應的目錄下出現下述列表

其中tensorflow.lib和tensorflow.dll即為所需要的檔案。

5. 使用和驗證

   1. 在 vs 中新建一個工程(控制檯檔案和空白項均可)。在工程中右擊——屬性——c/c++——常規——附加包含目錄,在該目錄下新增E:\tensorflow
E:\tensorflow\tensorflow\contrib\cmake\build
E:\tensorflow\tensorflow\contrib\cmake\build\external\eigen_archive
E:\tensorflow\tensorflow\contrib\cmake\build\protobuf\src\protobuf\src
E:\tensorflow\tensorflow\contrib\cmake\build\external\nsync\public

  2. 右鍵——專案——新增——現有項,找到對應包含tensorflow.lib的目錄。加入lib連結。

  3. 右鍵——屬性——c/c++——前處理器,然後在裡面加入PLATFORM_WINDOWS

  4. 輸入程式碼並執行

 

#include <stdio.h>
#include <stdlib.h>
#include <tensorflow\core\public\version.h>

int main(void)
{
printf("Hellow from Tensorflow c library version %s\n", TF_VERSION_STRING);
system("pause");
return 0;

}

 

 

如果想在一個已經有的工程中加入tensorlfow的程式碼,可以在工程的屬性下面,匯入上述對應的tensorflow相關依賴和連結庫即可。

 

三、一些警告

1. 一般在編譯完之後會有如下介面,該介面不用管。

2.  在編譯過程有時候會報\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(171,5): error MSB6006: “cmd.exe”已退 出,程式碼為 1。 [D:\tensorflow-master\tensorflow\contrib\cmake\build\grpc.vcxproj]

此時在cmakelist中將grpc設定為off在重新編譯即可。