visual studio编译qt+libtorch,载入模型时报错。
出错信息:
使用visual studio 编译QT+libtorch报错
未加载kernelbase.pdb,kernelbase.pdb 包含查找模块 KernelBase.dll 的源文件所需的调试信息。
0x00处(位于 view64.exe 中)有未经处理的异常: Microsoft C++ 异常: std::length_error,位于内存位置 0x00 处。
原因:
libtorch版本与QT编译器不匹配。例如,Debug版本的libtorch必须使用QT Debug版本进行编译。如果不匹配,有些功能例如tensor可以正常使用,但是加载模块MODULE时会报错。
解决方法:
修改QT编译器或Libtorch编译版本,使其一致。
可以用以下代码测试
#undef slots
#include<torch/script.h>
#include<torch/torch.h>
#define slots Q_SLOTS
int main(int argc, char* argv[])
{
//test torch
auto device = torch::Device(torch::kCUDA);
auto model = ConvReluBn(3, 4, 3);//自己写好的模块
//test qt
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}