尝试在 Windows 11 上使用预编译的二进制文件运行 rustqlite 时缺少的“sqlite3.lib”文件是什么?

问题描述 投票:0回答:3

我对 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 代码本身没有编译器错误,看起来还不错。我期待任何关于如何解决这个问题的见解

database sqlite rust linker
3个回答
2
投票
正如@pigeonhands 指出的那样,

cargo.toml
中的简单修复。我所要做的就是在
rustqlite
依赖项中指定功能捆绑选项。

rusqlite = { version = "0.29.0", features = ["bundled"] }

对我的数据库的写入速度非常慢,但除此之外现在可以工作了,谢谢。


1
投票

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
)。


0
投票

我也被卡住了。
不得不搜索很多小时。
我正在Windows平台上工作。
所以步骤如下:

  1. 下载 SQLite 合并源代码文件
    并解压缩到一个文件夹中(例如 C:\sqlite-dll-win-x64-3440200)。
    下载链接https://www.sqlite.org/download.html
  2. 下载适用于 Windows 的预编译二进制文件
    并解压到上述文件夹中(例如 C:\sqlite-dll-win-x64-3440200)。
  3. 按窗口按钮并粘贴“Developer Command Prompt for VS xxx”
    然后打开“命令外壳”
    并转到上面的文件夹(例如 C:\sqlite-dll-win-x64-3440200)
  4. 复制粘贴此命令并按 Enter
    “lib /DEF:sqlite3.def /OUT:sqlite3.lib /MACHINE:x64”
  5. 按窗口按钮并粘贴“系统环境变量”
    搜索并打开“环境变量”
    并转到“系统变量”选项卡
    并在变量列表中搜索“path”
    编辑它(双击)。
  6. 在路径列表下添加您的文件夹(例如 C:\sqlite-dll-win-x64-3440200)并保存。

重新启动命令提示符(shell)
重新启动会是最好的
并检查其余的

感谢@Ahmad Rosid 的 Rust 教程。

© www.soinside.com 2019 - 2024. All rights reserved.