使用vs2019将libtorch或者网络打包成dll

2023-05-16

最近在搞一个程序,需要把libtorch打包成dll,让别人使用,在网上找了好久都没只有找到合适的答案,最后在一个博主大哥那里找到了,很是感激这位大哥与我们分享自己的经验,接下来我把我自己的学习过程也与大家分享一下。
一、打开vs2019,创建新项目,选择创建动态链接库。
在这里插入图片描述2、配置新项目
在这里插入图片描述使用Debug和x64,为什么是debug,因为我的libtorch是DeBug版本的,为什么是x64,因为x86性能支持不了。
3、不使用预编译头
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述4、新建头文件和cpp文件
在这里插入图片描述

在这里插入图片描述
在‘LibtorchTest.h’中编写如下代码:

#pragma once
#include <iostream>

extern "C" __declspec(dllexport) void MyTest();

上面代码的功能是声明一个可被调用的函数“ MyTest()”,它的返回类型是void。

现在分析一下extern "C" __declspec(dllexport) void MyTest()
extern "C"的作用是告诉编译器将被它修饰的代码按C语言的方式进行编译

__declspec(dllexport),此修饰符告诉编译器和链接器被它修饰的函数或变量需要从DLL导出,以供其他应用程序使用;

与其相对的还有一句代码是__declspec(dllimport)此修饰符的作用是告诉编译器和链接器被它修饰的函数或变量需要从DLL导入,

最后是函数void MyTest(),它就是需要被其他程序调用的函数。
在这里插入图片描述
在这里插入图片描述写上你的代码:

#include <iostream>
#include "TestDLL.h"
#include <torch/torch.h>
void MyTest()
{
    torch::Tensor tensor = torch::rand({ 5,3 });
    std::cout << tensor << std::endl;
}


选择生成,只需要编译,不需要运行,运行会出错,本来就无法运行。
在这里插入图片描述
打开文件所在位置,找到编译好的dll和lib文件
在这里插入图片描述**上边是生成的库文件,

下边这个是头文件**在这里插入图片描述
把这三个文件拷贝到需要调用这个dll的代码的文件夹下边在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
修改导入的libtorchTest.h头文件里面的代码

//修改后的代码
#pragma once
#pragma comment(lib,"TestDLL.lib")
#include <iostream>

extern "C" __declspec(dllimport) void MyTest();


添加源文件
在这里插入图片描述


#include "TestDLL.h"

int main()
{
	MyTest();
}

结果显示:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用vs2019将libtorch或者网络打包成dll 的相关文章

随机推荐

  • IDEA当中System.out.println输出中文乱码,以及控制台中文文字乱码的解决方案

    操作步骤如下 1System out println在控制台输出中文乱码的解决 xff08 原因分析 xff09 因为System out读取系统使用GBK编码输出 xff0c 而IEDA控制台使用的是UTF 8解码 xff08 解决方法
  • rosdep update延时问题最简单方法解决和ros一键下载

    ros一键下载 点击链接即可参考博客教程安装 http t csdn cn HqtoN rosdep update延时问题解决 xff08 time out xff09 方法一 xff1a 第一步 xff1a sudo apt get in
  • Typora基础操作

    Typora操作教程 文章目录 Typora操作教程一 xff1a Markdown语法1 1标题 1 2字体1 3线1 4列表1 5区块1 6代码1 7链接1 8图片二 xff1a Typora与数学公式2 1各种符号的实现2 2各种特殊
  • Tomcat下载和配置详细

    Tomcat下载和配置 1 下载Tomcat安装包 Tomcat下载地址 xff1a https tomcat apache org 点击圈画部分下载安装包 在这里插入图片描述 https img blog csdnimg cn 5b033
  • 【嵌入式知识08】STM32的USART串口通信,给上位机连续发送Hello Windows!

    本文主要介绍串口协议和RS 232 485标准 xff0c 以及RS232 485电平与TTL电平的区别 xff0c 了解 34 USB TTL转232 34 模块的工作原理 xff1b 并完成一个STM32的USART串口通讯程序 本文目
  • dm-vio-ros的安装(详细)

    前言 dm vio安装 参考博客 SLAM DM VIO ros版 安装和论文解读 在安装过程中 xff0c 有些地方提示的不是很清楚 xff0c 故写一篇记录避免再次犯错 在dm vio的一个子目录下创建ros工作空间 xff0c 如图所
  • C语言几种常见头文件,再也不怕用了函数不知道他“妈”的问题了!!!

    不完全统计 xff0c C语言标准库中的头文件有15个之多 xff0c 所以我主要介绍常用的这四个头文件stdio h xff0c string h xff0c math h xff0c stdlib h xff0c 以后用到其他的再做补充
  • K210与STM32之间的通信

    K210与STM32之间使用串口进行通信 K210 K210使用的开发环境是MaixPy IDE 具体解释见代码注释 提示 xff1a 这里可以添加本文要记录的大概内容 xff1a span class token keyword impo
  • Linux多线程编程问题:对‘pthread_create’未定义的引用

    在Linux下进行多线程程序测试时出现如下问题 xff1a 对 pthread create 未定义的引用 collect2 error ld returned 1 exit status 问题原因 xff1a linux下调用子线程时会用
  • PROC系列之---/proc/pid/stat

    proc stat 包含了所有CPU活跃的信息 xff0c 该文件中的所有值都是从系统启动开始累计到当前时刻 root 64 localhost cat proc 6873 stat 6873 a out R 6723 6873 6723
  • realsense d435 launch中修改频率不好用

    警告提示 xff1a Given stream configuration is not supported by the device span class token operator span Stream Color Stream
  • RK1109/RK1126--人工智能NPU强劲算力芯片

    瑞芯微电子第四届 开发者之春 大会上 xff0c 针对视觉领域 xff0c 推出全新的视觉处理器RV1109 1126芯片 从下图中我们可以清晰的看出 xff0c 在2020年瑞芯微推出的产品主要是面向物联网人工智能 机器视觉和机顶盒领域
  • Makefile

    Makefile的引入及规则 使用keil mdk avr等工具开发程序时点点鼠标就可以编译了 xff0c 使用Keil xff0c MDK xff0c AVR等工具开发程序时点点鼠标就可以编译了 它的内部机制是什么 它怎么组织管理程序 怎
  • 转载知乎-深度可分离卷积

    深度可分离卷积
  • vgg16网络改深度可分离卷积

    原网络 span class token keyword class span span class token class name CNN0 span span class token punctuation span nn span
  • Dropout 丢弃函数的使用

    Class span class token class name USeDropout span span class token punctuation span nn span class token punctuation span
  • libtorch-resnet18

    与大家分享一下自己在学习使用libtorch搭建神经网络时学到的一些心得和例子 xff0c 记录下来供大家参考 首先我们要参考着pytorch版的resnet来搭建 xff0c 这样我们可以省去不必要的麻烦 xff0c 上代码 xff1a
  • Yolov5 -libtorch部署

    将python训练好的网络模型转为可以再libtorch上走的pth模型 xff0c 转换代码如下 xff1a 可以直接赋值粘贴 import argparse import sys import time sys span class t
  • c++ 关于error LINK2005: XXXX已经在 .obj 中定义“的问题

    代码很多的时候出现这个问题很棘手 xff0c 小号大量时间来排查问题 xff0c 所以一边学习一边记录学习中出现的问题 原因 xff1a 是因为编程习惯的问题 xff0c 直接在头文件 h中直接定义了变量或者函数 xff0c 然后A cpp
  • 使用vs2019将libtorch或者网络打包成dll

    最近在搞一个程序 xff0c 需要把libtorch打包成dll xff0c 让别人使用 xff0c 在网上找了好久都没只有找到合适的答案 xff0c 最后在一个博主大哥那里找到了 xff0c 很是感激这位大哥与我们分享自己的经验 xff0