windows使用cmake配置libtorch到vs 2019并使用的那些坑
写在前面
这次的任务是将retinanet的预测部分用C++实现,所以有了这次配置libtorch的事;
这是一个过程的记录,可以直接从:此处看起
提醒:windows环境下部署libtorch不要用release,直接使用debug,(个人观点)
一、下载cmake;
官网下载即可,没什么可说的;
二、配置libtorch到vs
可参照下面的博客:https://blog.csdn.net/qq_35608277/article/details/89817027
第一步:使用vs 2019创建一个项目;

项目.cpp初始文件内容:
#include <torch/script.h> // One-stop header.
#include <iostream>
#include <memory>
int main(int argc, const char* argv[]) {
torch::Tensor tensor = torch::rand({3,3});
std::cout << tensor < std::endl;
}
第二步,新建CMakelists.txt文件,和.cpp文件在同一个目录下,并建立一个build文件夹;

第三步,编写CMakelists.txt内容:
cmake_minimum_required(VERSION 3.17 FATAL_ERROR)
project(ConsoleApplication1)
find_package(Torch REQUIRED)
add_executable(ConsoleApplication1 ConsoleApplication1.cpp)
target_link_libraries(ConsoleApplication1 "${TORCH_LIBRARIES}")
set_property(TARGET ConsoleApplication1 PROPERTY CXX_STANDARD 14)
~~
第四步,打开cmake-gui:

然后填写标红的两处,第一个source code就是放CMakelists.txt的目录,
第二个build the binaries,选择新建的bulid文件夹
第五步,点击Configure;
情况一:无弹窗出现,显示Configuring done,即使下方出现红字warning也不用管,再点击Generate即可;
情况二:出现弹窗,显示有错误;改正错误,下面提供我在使用中的一些错误,供参考;
三、错误
错误:出现无法找到toch、cuda、cudnn的DIR的问题;
类似这样(当然这个截图实际只是warning)
解决方案:手动复制DIR到cmake上;
1.对于torch,就是libtorch下的文件夹,

2.对于cuda,
该DIR的目录地址即为这个(标蓝的行)
但是可能你发现你的目录了并没有这个GPU Computing Toolkit,那么你需要下载CUDA;
下载方式:进入官网下载即可;
3.对于cudnn,(下载:绕过官方注册,安装)
一般是没有下载,所以仍然需要去官网下载,对于这个下载官网要求注册账户,下面是不注册账户的方式:
1.进入官网的下载选项,选择自己需要的下载项,网址:https://developer.nvidia.com/rdp/cudnn-archive
2.右键使用迅雷下(或者使用其他的下载器)
该方法来自于博客:https://blog.csdn.net/weixin_40392957/article/details/80207366
然后对于压缩包解压,对于文件夹中的文件,将每个文件(注意是文件,不是文件夹)复制到CUDA的同名文件夹下:

安装方式来自于博客:https://blog.csdn.net/sinat_23619409/article/details/84202651
其他错误:忘记保存了。。。
四、使用libtorch
1.打开build文件夹,打开如下文件:

即可发现已经配置成功,头文件不再显示错误:
2.但是还是有错误: “初始化”: 无法从“torch::jit::script::Module”转换为“std::shared_ptrtorch::jit::script::Module”

错误原因:std::shared_ptr是libtorch测试版本使用的变量类型,现在已经变更
更改:
将
std::shared_ptr<torch::jit::script::Module> module = torch::jit::load(argv[1]);
更改为:
torch::jit::script::Module module = torch::jit::load(argv[1]);
参考博客:https://blog.csdn.net/qq_33507306/article/details/104427134
3.错误:
上述的内容对于下面操作并没有太大帮助
五、真正的坑:官方提供的libtorch文档的release版本只是针对linux,所以使用windows系统的情况下需要下载debug版,而很大的网上教程都是使用release来调试,所以会出现很多莫名奇妙的错误,只要使用debug来完成就可以了。
使用vs的项目属性来配置libtorch:
1.将debug编译器改为x64模式;

2.打开项目属性:

3.配置vc++目录的包含目录和库目录:(根据自己的libtorch的实际目录来配置)


4.配置链接器——输入选项中的附加依赖项:

建议将libtorch的lib目录下的所有.lib文件都加入:
torch.lib
c10.lib
c10_cuda.lib
caffe2_module_test_dynamic.lib
caffe2_nvrtc.lib
clog.lib
cpuinfo.lib
libprotobufd.lib
libprotobuf-lited.lib
libprotocd.lib
5.应用并确定,然后再次运行,可能会出现缺少某个.dll文件,可以直接把lib中的所有.dll文件直接复制到main.cpp同一目录下,或者提示缺哪个复制哪个;

6.再次运行,即可看到结果:
