我在windows中,试图构建一个使用rust的torch crate的项目的发布版。要安装它,我只需在Cargo.toml中添加:
[dependencies]
tch = "0.4.0"
如果我做货物运输,它会很好。但是如果我执行生成的.exe,我会得到这些错误:
torch_cu.dll not found
c10.dll not found
我尝试下载libtorch的编译版本,并将其/lib/中的所有内容包含到同一个文件夹中,现在出现错误:
procedure entry point not found
我尝试通过添加.cargo/config.toml到我的项目中来静态链接所有内容,内容如下:
[target.x86_64-pc-windows-msvc]
rustflags = ["-C", "target-feature=+crt-static"]
如this post所建议的,但没有任何改变。
我也不明白tch的自述是怎么说的。
我该如何处理这类问题?感谢您的任何帮助!我是新来处理这些链接错误的。
沙盒项目我正在尝试这些解决方案:https://github.com/titoco3000/torch_test
2条答案
按热度按时间qojgxg4l1#
对于任何和我有同样问题的人...我认为tch-rs crate使用的libtorch版本不是最新的,因为只是将libtorch/lib中的所有dll复制粘贴到同一个文件夹是不起作用的;* 但是 * 复制rust放置在
\target\debug\build\torch-sys-cba3ef2adb59743a\out\libtorch\libtorch\lib\
到
\target\debug\
做的工作!这似乎是一个可怕的解决方案,但至少有效。
p4tfgftt2#
正如文档中提到的,你可以通过在编译之前导出
LIBTORCH_STATIC=1
环境变量来静态链接pytorch。完整的文档在这里。至于
target-feature=+crt-static
,它只影响C Runtime(crt
是它的缩写),所以它只会将Visual C++ Runtime链接到您的应用程序中,不会影响其他DLL。因为PyTorch不是C Runtime的一部分,所以不会对它产生任何影响。