如何将源码编译的Tensorflow链接到C++项目中
C++项目链接已编译Tensorflow库的正确配置步骤
第一步:补全Tensorflow编译目标
你完成基础编译后,需要额外执行编译命令生成聚合的头文件与C++ API专用库:
# 生成所有C++ API所需头文件 bazel build //tensorflow:install_headers # Linux平台编译C++动态库(架构和你项目保持一致) bazel build //tensorflow:libtensorflow_cc.so # Windows平台编译C++动态库对应的命令 bazel build //tensorflow:tensorflow_cc.dll
编译完成后你会在bazel-bin/tensorflow目录下得到对应的库文件与聚合后的include目录。
第二步:配置C/C++附加包含目录
你之前添加的路径不全,需要新增以下路径到项目属性->C/C++->附加包含目录:
- Tensorflow源码根目录
bazel-bin\tensorflow\include(上一步install_headers生成的聚合头文件目录)bazel-tensorflow\external\eigen_archivebazel-tensorflow\external\protobuf_archive\srcbazel-tensorflow\external\com_google_abslbazel-tensorflow\external\nsync\public
如果后续仍有头文件找不到的报错,直接搜索报错提示的头文件在bazel-tensorflow\external下的存放路径,将上层目录添加到包含列表即可。
第三步:配置链接器参数
你当前只配置了头文件路径,未配置链接相关参数,这是报错的核心原因:
- 打开项目属性->链接器->常规->附加库目录,添加
bazel-bin\tensorflow路径 - 打开项目属性->链接器->输入->附加依赖项,添加对应库文件:
- Windows动态库版本:添加
tensorflow_cc.lib、tensorflow_framework.lib - Linux动态库版本:添加
libtensorflow_cc.so、libtensorflow_framework.so - 静态编译版本根据你编译生成的静态库名称添加即可
- Windows动态库版本:添加
第四步:运行时配置
如果使用动态库版本,需要将编译生成的libtensorflow_cc.dll、libtensorflow_framework.dll(Windows)或者对应的so文件(Linux)放到项目输出目录,或者添加到系统PATH环境变量中,避免运行时找不到库的报错。
常见问题排查
- 确认Tensorflow编译时选择的架构(x86/x64)、运行库版本(MD/MT)和你的C++项目完全一致,否则会出现符号不匹配的链接错误
- 如果你编译的是带CUDA支持的Tensorflow,需要确保你的项目也配置了对应版本的CUDA包含目录与库路径
内容的提问来源于stack exchange,提问作者Yousef Hesham
相关产品推荐
相关产品推荐

