我正在尝试将使用pytorch训练的神经网络模型加载到C ++程序。 有tutorial的操作方法,但无法使其正常工作。
出现控制台,然后我得到
“由于无法找到对象xxx.dll,因此无法执行代码”。
有时是c10.dll,有时是torch.dll或caffe2.dll。
我检查了50次C / C ++和链接器属性。
我使用libtorch的调试和发行版进行了检查。
我在Debug x86,Debug x64,x86版本,x64版本上运行它。
然后将这些文件手动添加到Debug文件夹(.exe文件在其中)
没有一个起作用。
这是我的代码
#include "pch.h"
#include <torch/script.h>
#include <memory>
#include <iostream>
int main()
{
std::cout << "Hello World!\n";
}
这是我设置头文件目录的方式:
$(SolutionDir)libtorch\include
...以及其他库的链接器目录:
$(SolutionDir)libtorch\lib
...以及我添加的所有.lib文件:
torch.lib;onnxifi_loader.lib;onnxifi_dummy.lib;onnx_proto.lib;onnx.lib;libprotoc.lib;libprotobuf-lite.lib;libprotobuf.lib;foxi_loader.lib;foxi_dummy.lib;cpuinfo.lib;clog.lib;caffe2_module_test_dynamic.lib;caffe2_detectron_ops.lib;caffe2.lib;c10.lib;
不是该库中的某些函数或类无法正常工作。我无法编译一个简单的“ Hello World”程序。
我什至下载了一些随机的.dll文件来检查是否是这个特定的库问题,而其他.dll都没有问题。
我手动设置项目,并按照我发送的链接中的说明进行操作(使用CMAKE创建项目),但仍然出现此错误。
我正在研究它几个小时,对此我感到非常恼火。我真的不知道在这种情况下还能错过什么。
我正在Windows 10上运行VS 2017社区15.9.14版。
答案 0 :(得分:1)
好的,我实际上是由我自己提出解决方案的。
由于某些我完全不了解的原因,我不得不将.dll文件放在我的项目文件夹中。 至少在我的PC上,在链接器属性中设置其他库的路径似乎不适用于那些库。
这非常令人困惑,因为我下载了其他随机库进行测试,可以将其放置在所需的任何位置,只需在链接器属性中设置正确的路径即可。
但不是这个特定的库(libtorch)。
无论如何,问题已解决,希望有一天有人能找到这个有用的方法:)