tensorflow c++ api + windwos + vs部署 详细避坑

embedded/2024/10/21 12:32:31/

文章目录

  • 前言
  • 一、安装MSYS2
  • 二、选择tensorflow的版本
  • 三、安装Bazel
  • 四、配置一个anconda的tensorflow环境
  • 五、生成dll,lib,include
  • 六、在vs2019中配置项目
  • 七、测试并针对性修补问题


前言

不能使用vs2022配置tensorflow c++ api,即使要安装 2.10.0版本,也尽量使用vs2019
在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、安装MSYS2

安装MSYS2,
在环境变量中添加 Path,例如C:\msys64\usr\bin
然后,使用 cmd.exe 运行以下命令:

pacman -S git patch unzip

tensorflow_25">二、选择tensorflow的版本

根据需要选择版本tensorflow
下载zip包到本地 解压
在这里插入图片描述

三、安装Bazel

下载exe文件 bazel
1.选择版本,如果是安装2.6.0以上的版本,在tensorflow github 库中查询可用的bazel版本
在这里插入图片描述
2.配置环境变量

在path中把bazel.exe文件的路径添加进去,并且在系统变量中添加
在这里插入图片描述


tensorflow_41">四、配置一个anconda的tensorflow环境

根据tensorflow版本选择要安装的python版本
然后 pip intsall tensorflow==x.xx.x(目标版本)

五、生成dll,lib,include

在下载的tensorflow源码的文件夹下,打开cmd
运行cofigure
要修改python.exe的路径为上一步配置的路径,我这里的配置是cpu版本
在这里插入图片描述
然后运行 bazel build --config=opt --config=v2 //tensorflow:tensorflow_cc.dll (–config=v2是设置编译tensorflow 2的api) 这一步可能需要魔法上网
然后运行bazel build --config=opt --config=v2 //tensorflow:tensorflow_cc.lib
最后运行bazel build --config=opt --config=v2 //tensorflow:install_headers

tensorflow路径\bazel-bin\tensorflow 下可以看见
在这里插入图片描述
然后把python环境中的google文件夹复制到刚刚生成的include中
在这里插入图片描述

六、在vs2019中配置项目

把include文件夹添加到 VC++目录的 包含目录,库目录中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、测试并针对性修补问题


#include "tensorflow/cc/client/client_session.h"
#include "tensorflow/cc/ops/standard_ops.h"
#include "tensorflow/core/framework/tensor.h"
using namespace std;int main() {using namespace tensorflow;using namespace tensorflow::ops;Scope root = Scope::NewRootScope();// Matrix A = [3 2; -1 0]auto A = Const(root, { {3.f, 2.f}, {-1.f, 0.f} });// Vector b = [3 5]auto b = Const(root, { {3.f, 5.f} });// v = Ab^Tauto v = MatMul(root.WithOpName("v"), A, b, MatMul::TransposeB(true));std::vector<Tensor> outputs;ClientSession session(root);// Run and fetch vTF_CHECK_OK(session.Run({ v }, &outputs));// Expect outputs[0] == [19; -3]LOG(INFO) << outputs[0].matrix<float>();cout << "OK" << endl;return 0;
}

tensorflow_cc.dll 放到项目的x64/Release文件夹下

如果运行报错在这里插入图片描述
打开tensorflow\tools\def_file_filter\def_file_filter.py.tpl
找到
在这里插入图片描述
S编译项目后:LNK2001 无法解析的外部符号,例如: “public: __cdecl tensorflow::ClientSession::ClientSession(class tensorflow::Scope const &)” (??0ClientSession@tensorflow@@QEAA@AEBVScope@1@@Z)
打开E:\tensorflow_c++_tools\msys64\tensorflow\tensorflow\tools\def_file_filter\def_file_filter.py.tpl

接着下面安装对应格式添加进去def_fp.write(“\t \n”),如上面的例子则添加def_fp.write(“\t ??0ClientSession@tensorflow@@QEAA@AEBVScope@1@@Z\n”)
添加进入之后再在cmd中编译lib、dll,可以接着之前的编译结果接着编译

最后运行可用看见
在这里插入图片描述
大功告成!


http://www.ppmy.cn/embedded/129271.html

相关文章

【乾坤新增一个子应用】

乾坤框架是一个基于微前端的解决方案&#xff0c;可以实现不同子应用的独立开发、独立部署和独立运行。下面是新增一个子应用的完整步骤&#xff1a; 创建一个新的子应用项目 首先&#xff0c;在终端中使用命令行工具创建一个新的子应用项目&#xff0c;可以选择使用任何前端框…

大模型时代,云原生数据底座的创新和实践

本文整理自百度云智峰会 2024 —— 云原生论坛的同名演讲。 大模型毫无疑问是当前技术发展的热点&#xff0c;成为大家默认的提升生产力工具。 但是&#xff0c;大模型训练主要使用互联网上的公开数据为主&#xff0c;没有企业内部的数据&#xff0c;所以大模型本质上自带的都…

使用 SSH 连接 GitLab 的常见问题及解决方案

使用 SSH 连接 GitLab 的常见问题及解决方案 在使用 SSH 连接到 GitLab 服务器时&#xff0c;可能会遇到类似于以下的错误信息&#xff1a; git192.168.xx.xxx: Permission denied (publickey).这个错误通常表示 SSH 无法验证你的公钥&#xff0c;导致无法访问 GitLab 仓库。…

Spring Boot驱动的在线考试系统:JavaWeb技术实战

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理基于JavaWeb技术的在线考试系统设计与实现…

PROFINET开发或EtherNet/IP开发嵌入式板有用于工业称重秤

这是一个真实案例&#xff0c;不过客户选择不透露其品牌名称。稳联技术的嵌入式解决方案助力工业称重设备制造商连接至任意工业网络。多网络连接使得称重设备能够轻松接入不同的控制系统&#xff0c;进而加快产品的上市时间。 我们找到了稳联技术的解决方案。他们成熟的技术与专…

10.16工作笔记

要做的事 过一遍&#xff0c;完善代码 修改度数据的那几个函数(读取因子的时候读了多因子&#xff0c;但是不能用) 加一个函数&#xff0c;把所有读数据的都加进去 写参数平原&#xff0c;考虑多参数情况考虑多因子怎么办 14计算顺序 period_df read_coin_1得到所有币&…

2.6.ReactOS系统中从内核中发起系统调用

2.6.ReactOS系统中从内核中发起系统调用 2.6.ReactOS系统中从内核中发起系统调用 文章目录 2.6.ReactOS系统中从内核中发起系统调用前言 前言 上面我们已经可以看到用户空间&#xff08;R3&#xff09;进行系统调用的全过程即两种方法的具体实现。 系统调用一般时从R3发起的…

二、数据离线处理场景化解决方案

https://connect.huaweicloud.com/courses/learn/Learning/sp:cloudEdu_?courseNocourse-v1:HuaweiXCBUCNXE147Self-paced&courseType1 1.离线处理方案 **业务场景-安平领域** 业务场景-金融领域 离线批处理常用组件 HDFS&#xff1a;分布式文件系统&#xff0c;为各种…