按照帖子https://blog.csdn.net/qq_17783559/article/details/117716173中间所述的编译过程编译
由于我的torch版本是1.8.1。所以在VS(VS2017)的编译过程还出现了多处的无法解析外部符号错误,比如:
prroi_pooling_gpu.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: __cdecl at::Tensor::Tensor(void)" (__imp_??0Tensor@at@@QEAA@XZ)
看符号名字应该torch库中的符号,项目的库目录、附加库目录配置没错,那只可能使linker的输入那里少填了lib。
找到虚拟环境中torch的lib目录,看了看里面的lib,找了几个看起来可能像的lib填进去,最后发现还需要添加c10_cuda.lib, torch_cpu.lib, torch_cuda_cpp.lib
完整的lib列表如下:
torch.lib
torch_cpu.lib
torch_cuda_cpp.lib
python37.lib
python3.lib
cudart.lib
c10.lib
c10_cuda.lib
torch_python.lib
_C.lib
最后生成pyd文件,复制到虚拟环境中,Dimp Tracker可以顺利运行。
然后我顺便看了torch1.2.0的lib目录,发现里面的lib文件和torch1.8.1的果然有区别。
所以还是torch版本的问题。