Rust在版本中包含DLL

sdnqo3pr  于 2023-06-23  发布在  其他
关注(0)|答案(2)|浏览(178)

我在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

qojgxg4l

qojgxg4l1#

对于任何和我有同样问题的人...我认为tch-rs crate使用的libtorch版本不是最新的,因为只是将libtorch/lib中的所有dll复制粘贴到同一个文件夹是不起作用的;* 但是 * 复制rust放置在
\target\debug\build\torch-sys-cba3ef2adb59743a\out\libtorch\libtorch\lib\

\target\debug\
做的工作!这似乎是一个可怕的解决方案,但至少有效。

p4tfgftt

p4tfgftt2#

正如文档中提到的,你可以通过在编译之前导出LIBTORCH_STATIC=1环境变量来静态链接pytorch。完整的文档在这里。
至于target-feature=+crt-static,它只影响C Runtime(crt是它的缩写),所以它只会将Visual C++ Runtime链接到您的应用程序中,不会影响其他DLL。因为PyTorch不是C Runtime的一部分,所以不会对它产生任何影响。

相关问题