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

最近在搞一个程序,需要把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();
}

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值