有没有办法链接不在当前包路径中的库.
此链接建议将所有内容放在本地目录下.我们的包安装在其他地方的某个存储库中 我只想在windows上指定它的libpath.
authors = ["Me"]
links = "CDbax"
[target.x86_64-pc-windows-gnu.CDbax]
rustc-link-lib = ["CDbax"]
rustc-link-search = ["Z:/Somepath//CPP/CDbax/x64/Debug/"]
root = "Z:/Somepath//CPP/CDbax/x64/Debug/"
Run Code Online (Sandbox Code Playgroud)
但尝试货物建造-v给了我
package `hello v0.1.0 (file:///H:/Users/Mushfaque.Cradle/Documents/Rustc/hello)` specifies that it links to `CDbax` but does not have a custom build script
Run Code Online (Sandbox Code Playgroud)
从货物构建脚本支持指南,它似乎表明这应该工作.但我可以看到它没有添加路径.bin\x68_64-pc-windows-gnu\然而,将lib移动到本地路径中是有效的.
更新 感谢下面的答案,我想我会更新这个,以便给出我的机器上有效的最终结果,以便其他人发现它很有用.
在Cargo.toml中添加
links = "CDbax"
build = "build.rs"
Run Code Online (Sandbox Code Playgroud)
即使没有build.rs文件,它似乎需要它(?)否则抱怨
package `xxx v0.1.0` specifies that it links to `CDbax` but does not have a custom build script
Run Code Online (Sandbox Code Playgroud)
随后Vaelden回答在.cargo中创建一个'配置'文件
如果这是一个子包,你不需要将links =标记放在父包中,即使它是一个dll; 即使是'货运'.我假设它将dll路径添加到执行环境中
我认为问题在于您错误地将货物配置中的项目清单错误.
Cargo.toml在你的项目的根文件.它描述了您的项目本身.Cargo允许为特定项目或全局配置(如git)进行本地配置.Cargo还将此功能扩展到分层策略.例如,如果在/ home/foo/bar/baz中调用货物,则将探测以下配置文件:
Run Code Online (Sandbox Code Playgroud)/home/foo/bar/baz/.cargo/config /home/foo/bar/.cargo/config /home/foo/.cargo/config /home/.cargo/config /.cargo/config使用此结构,您可以指定每个项目的本地配置,甚至可以将其检入版本控制.您还可以在主目录中使用配置文件指定个人默认值.
所以如果你移动相关部分:
[target.x86_64-pc-windows-gnu.CDbax]
rustc-link-lib = ["CDbax"]
rustc-link-search = ["Z:/Somepath//CPP/CDbax/x64/Debug/"]
root = "Z:/Somepath//CPP/CDbax/x64/Debug/"
Run Code Online (Sandbox Code Playgroud)
到货物配置文件的任何正确位置,它应该工作.