【发布时间】:2019-09-18 20:58:14
【问题描述】:
我创建了一个 rust 应用程序,它使用来自 crates.io 的 sqlite crate
我只是按原样使用这个 crate,当我使用 cargo run 运行我的应用程序时,我确实得到了我想要的。但是,我的应用程序现在似乎依赖于 sqlite3.dll ,它需要在我的路径中。
从我阅读的 Cargo 文档中,我的理解是 sqlite crate 本身是静态链接的,而不是它所依赖的 C 库。
在我自己的计算机上,我通过简单地将 sqlite3.dll 复制到我的路径中的一个文件夹或同一个目录来解决这个问题,cargo 在其中创建了我的可执行文件。
但是,我意识到这不适用于任何 sqlite3.dll 文件,但它适用于我在 .multirust 文件夹深处找到的那个文件。
此外,当我将此应用程序提供给其他人时,我还必须确保该 DLL 也存在。
因此,我想通过将此 DLL 静态链接到我的可执行文件来避免这些复杂情况。
有没有办法告诉 Cargo 静态链接这个 C 库而不深入到自定义构建脚本?
【问题讨论】:
-
如果
sqlite3.dll本身不是,那么基本上所有的赌注都没有了,或者至少如果它是 linux 的话。我不完全确定 Windows 上的静态链接,因为我从来不需要它,所以可能仍有前进的道路,但看起来不太可能。
标签: sqlite rust rust-cargo