使用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 的相关文章

  • 是否可以通过 C#.NET 编写 Win32 .dll 文件?

    是否可以通过 C NET 编写 Win32 dll 文件 如果是的话 我在哪里可以找到一些教程 如果不是 那么您对编写 Win32 DLL 有什么建议 Thanks 对的 这是可能的 事实上有一个工具可以做到这一点 它在 Rainmeter
  • 将.exe项目转换为类库

    我在 Visual Studio 2010 Ultimate 中有一个半大型 C exe 项目 我想将其转换为 DLL 类库 有没有一种简单的方法可以做到这一点 而不涉及创建新的类库项目 预先感谢 项目 gt 属性 gt 应用程序选项卡 将
  • 尝试用 C# 创建数学输入面板

    如何在 C 中创建数学输入面板 我尝试将其放入 dll 中并调用它 但它立即关闭 include
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • 通过 Excel / VBA 调用 DLL 中的 C++ 函数在传递双参数时生成异常

    我试图通过 DLL 在 Excel VBA 中使用 C C 静态函数 我在 VS17 中调试时遇到异常 我怀疑这是参数传递方式的问题 它是双精度 EXCEL EXE 中 0x00007FFA28BBA14F kernel32 dll 处抛出
  • 读取依赖步行者输出

    I am having some problems using one of the Dlls in my application and I ran dependency walker on it i am not sure how to
  • 在 C/C++ 中捕获 DLL 崩溃

    我正在从 DLL 调用函数 如下所示 declspec dllimport bool dll function int main if dll function 在某些情况下 我传递给DLL函数的数据会导致DLL崩溃 是否可以捕获此问题 以
  • 针对 dll/lib 的 cmake 链接

    我的 cmake 的输出是一个静态库 我正在这样创建它 add library myMainLib STATIC BACKEND SOURCES 当我尝试让 myMainLib 链接到第三方 lib dll 时 出现了问题 dll 文件将在
  • VBA C# DLL 未注册

    我制作了一个 C NET dll 我想从 VBA 运行它而不注册它 我找到了解决方案there https stackoverflow com a 13333819并且它可以完美工作 但前提是程序集是使用 Framework NET 3 5
  • 从 C++ 调用 C++ DLL 可以,但从 C# 不行

    我有一个名为 tccdvc dll 的 DLL 它是此处提供的 SDK 的一部分 http www commell com tw Download Driver Induscial 20Peripheral Driver MPX 885 M
  • 有没有办法找到dll公开的所有函数

    我一直在寻找一种方法来获取映射到 dll 中函数名称的所有字符串 我的意思是您可以调用 GetProcAddress 的所有字符串 如果你对 dll 进行十六进制转储 符号 字符串 就在那里 但我认为必须有一个系统调用来获取这些名称 如果您
  • 链接到ntdll.lib并调用ntdll.dll内部的函数

    我最近正在对私有 API 进行一些研究 我尝试调用诸如NtOpenFile在 ntdll dll 中LoadLibrary and GetProcAddress在运行时 幸运的是 它成功了 今天早上我在电脑上进行了文件搜索 发现ntdll
  • 您可以从基本 Win32 控制台模板应用程序中的 C#/Winrt 组件调用(不是 WinForm/abstractions/wrappers 或使用 C++/Winrt 模板)吗?)

    我有一个现有的程序 win32 x86 控制台应用程序 需要调用托管代码 来自 Net 的 C dll The dll不暴露给 COM 但可以从 C WinRT 组件调用并由 C WinRT 控制台模板应用引用 BUT即使安装了 C Win
  • 在 Windows 安装项目中注册和取消注册 DLL

    我有几个 dll 文件需要在安装 卸载 Windows 安装程序时分别注册 取消注册 我尝试了以下方法 创建一个 bat 文件来注册 dll 问题是我无法在安装项目中使用 自定义操作 添加 bat 文件 另外 如何在卸载时运行注销dll 请
  • 在 Visual Studio 中引用同一解决方案中的项目

    我有一个包含两个项目的解决方案 其中一个项目是一个带有 DLL 文件的库 我希望能够在其他项目中引用该项目库以使用其类 我的最终目标是做到这一点 同时仍然可以访问库源代码 我尝试过引用 dll 也尝试过引用 csproj 这两种情况都有效
  • Oracle DataAccess 相关:“动态程序集中不支持调用的成员。”

    据我了解 此类错误已在 SO 上讨论过多次 有些人认为这是 DLL 文件中的错误 有些人通过更改 DLL 版本来解决 其他人似乎没有任何线索 无论如何 我只是发帖试试运气 在 C GUI 上的网格中选择一行时 我的应用程序崩溃了 stack
  • 转储 Windows DLL 版本的命令行工具?

    我需要一个命令行工具来转储标准 Windows DLL 版本信息 以便我可以通过 bash 脚本 Cygwin 对其进行处理 作为一名 Java 开发人员 我不太习惯 Microsoft 开发工具 尽管我对 Microsoft Visual
  • 从内存加载动态库

    是否可以从内存而不是从 mac gcc 上的文件系统加载库 在 Windows 中 我使用 MemoryModule 但它显然不跨平台兼容 首先 要做到这一点 我建议您阅读OS X ABI 动态加载器参考 https developer a
  • ctypes 加载 dll 时没有错误消息,但什么也没发生

    我尝试在ctypes中使用windll LoadLibrary将dll文件导入python 尽管没有任何错误消息 但头文件中列出的函数似乎都没有成功加载 我想知道是dll文件有问题 还是我错误地使用了windll LoadLibrary方法
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl

随机推荐

  • 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