如何构建TensorFlow C++;Windows XP 32位上的库 我试图为WindowsXP构建TensorFlow的C++库。虽然我已经能够在Windows10上构建和使用它,但32位XP不起作用。背景:我正在开发一个COM模块,它从tensorflow.dll调用函数。我的构建环境: Visual Studio 2017 15.7 CMake 3.11.1 张量流1.8 视窗10
我用于构建tensorflow.dll的顺序是:如何构建TensorFlow C++;Windows XP 32位上的库 我试图为WindowsXP构建TensorFlow的C++库。虽然我已经能够在Windows10上构建和使用它,但32位XP不起作用。背景:我正在开发一个COM模块,它从tensorflow.dll调用函数。我的构建环境: Visual Studio 2017 15.7 CMake 3.11.1 张量流1.8 视窗10,tensorflow,Tensorflow,我用于构建tensorflow.dll的顺序是: 打开“VS 2017的x64_x86交叉工具命令提示符” 尝试强制使用Win XP中可用的函数:set CXXFLAGS=/D_WINVER=0x0501/D_WIN32_WINNT=0x0501 将Git添加到路径:set path=%path%;C:\ProgramFiles(x86)\Git\bin 修复将*.proto文件转换为*.pb.h文件的CMake文件 配置CMake:CMake-Win32-T v141\u xp,host=x
- 打开“VS 2017的x64_x86交叉工具命令提示符”
- 尝试强制使用Win XP中可用的函数:
set CXXFLAGS=/D_WINVER=0x0501/D_WIN32_WINNT=0x0501
- 将Git添加到路径:
set path=%path%;C:\ProgramFiles(x86)\Git\bin
- 修复将*.proto文件转换为*.pb.h文件的CMake文件
- 配置CMake:
CMake-Win32-T v141\u xp,host=x64-DCMAKE\u SYSTEM\u VERSION=7.0-DCMAKE\u BUILD\u TYPE=Release-DPYTHON\u EXECUTABLE=C:\Users\williams\AppData\Local\Continuum\Anaconda3\envs\tensorflow\python.exe-Dtensorflow\u BUILD\u SHARED\u LIB=ON-Dtensorflow\u BUILD\u BINDINGS=OFF-Dtensorflow\u-Dtensorflow\u WIN\u CPU\u SIMD\u OPTIONS=“/arch:IA32”
- 构建:
cmake——构建--目标tensorflow--配置发布--/fileLogger/m:1/p:CL\u MPCount=1
LoadLibrary(“MyDLL.DLL”)-找不到指定的过程
。我不知道它在寻找什么过程,所以我能提供的最好方法是Dependency Walker突出显示WS2_32.DLL,并告诉我它找不到inet_ntop
和inet_pton
关于如何构建TensorFlow,使其不使用这两个函数,有什么建议吗
附言“停止使用XP,它已经过时,不再受支持”的建议在这里没有帮助。升级到Windows 10是绝对的最后手段,因为它会在测试该软件的设施中造成中断
编辑1:
这两个函数inet\u pton
和inet\u ntop
仅在一个文件中使用,该文件构成TensorFlow中Google云存储支持的一部分。除了tensorflow.dll之外,构建过程还生成了tensorflow_static.lib。针对静态版本进行链接并添加一些不包含在tensorflow_static.lib中的依赖项,使用inet.*
函数删除了代码
不过,我的COM模块在Windows XP上仍然不起作用,因为文件tensorflow\core\platform\Windows\env.cc
使用了仅在Windows Vista中引入的CloseThreadpoolWork
、SubmitThreadpoolWork等函数。看起来我必须用其他东西来替换它们,因为我在TensorFlow中没有看到替代的实现
此外,我发现
tensorflow\contrib\cmake\CMakeLists.txt
强制使用\u WIN32\u WINNT=0x0A00
,并且cxflags
是错误的环境变量。将其更改为CMAKE_CXX_FLAGS
至少可以包含我的宏定义,FWIW。最后,我放弃了这一点,因为这是不可能的。甚至用Boost中的东西替换线程池函数也没有帮助。如果其他人成功地让它工作,我很乐意接受这个答案,但到目前为止,这似乎是不可能的。将tensorflow移植到windows xp几乎是不可能的,因为: