前言
在上篇文章中,已经介绍了怎么将python网络模型进行导出,并利用libtorch在C++端进行调用
戳我跳转.
在项目工程中,程序一般需要导出为DLL提供给第三方使用。
此时除.dll、.h、.lib文件外,需一并提供对应所需的libtorch、opencv文件夹,才能实现vs中的环境配置。(即第三方环境需与导出dll的项目一致)(libtorch+opencv+cuda+cudnn)
操作流程
一、将c++程序导出生成dll动态链接库
【1】.创建新项目—动态链接库
【2】.在项目中建立Dll1.h(名称自定)头文件
内容如下:
调试中可能出现的错误:
1、显示无法打开某某源文件
解:配置环境问题,可能某个库无法正确读取,应在相关设置中加入其路径
仔细检查
2、配置好环境后,错误依然存在
解:注意编译版本和平台的设置,需和配置环境时的设置一样,否则配置无效,错误依然存在。
3、程序没有问题,但调试时出现大量不知名错误
解:加载头文件的顺序问题,torch头文件的加载不能置于最开始(即#include <torch/script.h> )
【3】.在项目中建立Dll1.cpp(名称自定)源文件
内容如下:
【4】.开始调试
出现以下窗口,便为调试成功(因为生成文件为.dll,而不是.exe,故无法启动)
此时,在项目目录/X64/debug下将生成.dll、.lib文件
二、在c++程序中调用生成的dll动态链接库
【1】.新建项目用于测试调用上述生成的.dll文件
【2】.将上生成的lib、dll文件复制到要实现调用的项目目录下
【3】.将原始头文件复制到要实现调用的项目目录下
【4】.打开dll_test.sln,在项目中添加现有项(即上复制的头文件),打开并对其内容做相关修改
【5】.在项目中新建.cpp源文件,添加代码实现对dll的调用,如下:
【6】.点击调试
说明调用成功!!
注:该方式仅适用于在调试模式下运行,若要运行.exe文件调用dll,需将.h、.dll、.lib复制到X64/debug/文件下
常见错误:
1、显示找不到(无法打开)Dll1.lib文件
在项目—》属性—》链接器—》附加库目录中
加入.lib放置的路径
-----------tbc----------
【作者有话说】
以上内容仅为博主自主整理分享,很多内容也是来源于网络,若有侵权,请私聊告知
大家有任何问题可在评论区讨论交流~