Windows 环境 Rust diesel 缺少lib解决办法

在 Windows 环境使用diesel库的时候,经常遇到找不到lib的错误。本文说明MySQL、Postgres、和SQLite三种数据库配置方法。

问题描述

安装diesel命令行工具:

cargo install diesel_cli

可能会出现类似的错误

error: linking with `link.exe` failed: exit code: 1113
  |
  = note: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14
.16.27023\\bin\\HostX64\\x64\\link.exe" "/NOLOGO"
 "/NXCOMPAT" "/LIBPATH:C:\\Users\\admin\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib"
...

  = note: Non-UTF-8 output: LINK : fatal error LNK1113: \xce\xde\xd0\xa7\xb5\xc4\xbc\xc6\xcb\xe3\xbb\xfa\xc0\xe0\xd0\xcd 0x1C2\r\n
error: aborting due to previous error

这表示找不到某种数据库的链接库,默认情况下,diesel会同时找MySQL、Postgres、SQLite的链接库,如果我们只用到Postgres数据库,可以这样写

cargo install diesel_cli --no-default-features --features postgres

但是,仅使用一种数据库仍然可能报错,可以参考下面内容解决。

解决办法

MySQL

  1. 下载MySQL Connector/C
  2. 解压缩文件到任意目录,并配置MYSQLCLIENT_LIB_DIR环境变量到该目录
  3. 检查是否配置成功
cargo install diesel_cli --no-default-features --features mysql

SQLite

  1. 自行编译或者从这里下载SQLite库文件sqlite3.lib
  2. 把库文件放到链接器lib目录
    怎么确定lib目录的位置呢?报错信息会说明使用链接器路径,比如我的环境是C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\link.exe,对应的lib目录C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib,下面有x86x64两个
    目录,分表表示32和64位的库,把库文件放入相应目录即可。
  3. 检查是否配置成功
cargo install diesel_cli --no-default-features --features sqlite

Postgres

  1. 安装Postgres,找到libpq.liblibpq.dll,放到链接器lib目录,参考SQLite配置的第2步。
  2. 检查是否配置成功
cargo install diesel_cli --no-default-features --features postgres

你可能感兴趣的:(Windows 环境 Rust diesel 缺少lib解决办法)