我对 Rust 生态系统还是个新手。我正在尝试使用 rustqlite crate,这样我就可以存储不适合内存的非常大的索引。我立即收到 运行时错误 ,其中出现故障并显示:
= note: LINK : fatal error LNK1181: cannot open input file 'sqlite3.lib'
linking with `link.exe` failed: exit code: 1181
我正在使用 sqlite3 windowsx86 的预编译二进制文件,并且我只有一个“tokens.db”和我的 sqlite3.exe。 sqlite3.lib 应该是什么?我没有找到任何信息丰富的视频或搜索,我什至安装了全新的 MS 构建工具等。
Rust 代码本身没有编译器错误,看起来还不错。我期待任何关于如何解决这个问题的见解
cargo.toml
中的简单修复。我所要做的就是在 rustqlite
依赖项中指定功能捆绑选项。
rusqlite = { version = "0.29.0", features = ["bundled"] }
对我的数据库的写入速度非常慢,但除此之外现在可以工作了,谢谢。
sqlite3.lib
是一个静态库。
以下内容适用于
diesel
出现相同的错误,我认为它也适用于 rusqlite
。如果不是这样,请告诉我。
如果您不想使用捆绑依赖项,而是使用全局依赖项,则可以在 cmd(不是 Powershell)中执行以下操作:
choco install sqlite
cd C:\ProgramData\chocolatey\lib\SQLite\tools
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
lib /machine:x64 /def:sqlite3.def /out:sqlite3.lib
为了使用
choco
,你需要安装Chocolately(你也可以通过Node.js安装Chocolately,也许你已经安装了它)。
您可以通过 Visual Studio 安装程序获取该
.bat
文件并安装“使用 C++ 进行桌面开发”工作负载。
您还可以通过 SQLite 版本 3.42.0 下载的 64 位 DLL (x64) 从 SQLite 网站下载
.def
文件,而不是使用 Chocolately,但使用该方法时,您还需要执行 .bat
文件,您只需跳过安装包管理器(巧克力)。
然后在执行
cargo
命令之前,在 Windows Powershell 中执行以下操作。
$Env:SQLITE3_LIB_DIR = "<path-to-folder-where-sqlite3-dot-lib-lives>"
然后执行您的
cargo
命令(例如 cargo test
)。
我也被卡住了。
不得不搜索很多小时。
我正在Windows平台上工作。
所以步骤如下:
重新启动命令提示符(shell)
重新启动会是最好的
并检查其余的
感谢@Ahmad Rosid 的 Rust 教程。