windows7安装用于mysql的diesel的坑

安装diesel遇到环境变量的大坑。

要mysqlclient

错误:

error: could not find native static library mysqlclient, maybe an -L flag is missing?
error: Could not compile mysqlclient-sys.

解决方案:需要指定mysqlclient.lib文件的位置,找到这个文件的根目录,添加永久用户变量(高级环境设置里的用户变量会增加这一条):

setx MYSQLCLIENT_LIB_DIR "C:\Program Files\MySQL\MySQL Server 5.7\lib" 

这里也有个大坑,详见章节“平台版本冲突”

要链接SQLlite

错误:

Compiling diesel_cli v1.4.1
error: linking with link.exe failed: exit code: 1181
|
= note: “C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\link.exe” “/NOLOGO” “/NXCOMPAT” “/LIBPATH:C:一坨一坨省略”
= note: LINK : fatal error LNK1181: cannot open input file ‘sqlite3.lib’

error: aborting due to previous error
error: failed to compile diesel_cli v1.4.1, intermediate artifacts can be found at C:\Users\me\AppData\Local\Temp\cargo-installWriLzQ

Caused by:
could not compile diesel_cli

To learn more, run the command again with --verbose.

解决方法:因为我们开发只用mysql,所以执行

cargo install diesel_cli --no-default-features --features mysql

相比cargo install diesel_cli,从100多个依赖,变成95个。

平台版本冲突

问题

= note: libcpmt.lib(xthrow.obj) : error LNK2038: mismatch detected for ‘_MSC_VER’: value ‘1900’ doesn’t match value ‘1800’ in libmysqlclient_sys-cd45e48baa434a2c.rlib(net_serv.obj)
libcpmt.lib(syserror.obj) : error LNK2038: mismatch detected for ‘_MSC_VER’: value ‘1900’ doesn’t match value ‘1800’ in libmysqlclient_sys-cd45e48baa434a2c.rlib(net_serv.obj)
LINK : warning LNK4098: defaultlib ‘LIBCMT’ conflicts with use of other libs; use /NODEFAULTLIB:library
libmysqlclient_sys-cd45e48baa434a2c.rlib(xml.obj) : error LNK2001: unresolved external symbol sprintf
libmysqlclient_sys-cd45e48baa434a2c.rlib(libmysql.obj) : error LNK2001: unresolved external symbol sprintf
libmysqlclient_sys-cd45e48baa434a2c.rlib(client.obj) : error LNK2001: unresolved external symbol sprintf
libmysqlclient_sys-cd45e48baa434a2c.rlib(my_time.obj) : error LNK2001: unresolved external symbol sprintf

原因:我安装的是visual studio 2015(MSC_VER是1900),而mysqlclient.lib是用mysql5.7,它是用visual studio 2013 (MSC_VER是1800)编译的,包括里面的mysqlclient.lib,因此存在冲突。

解决办法:要么安装mysql 8,它的mysqlclient.lib符合版本要求;要么安装mysql connector 高版本,C:\Program Files\MySQL\MySQL Connector C 6.1\lib\vs14下面的mysqlclient.lib符合版本要求。我用的是第二个方法(需要相应修改环境变量)。

安装mysql-connector-c-6.1.11-winx64之后,终于看到了vs14:
终于搞到了这个vs14

我试过用mysql installer删除mysql connector再重新安装,这种方法还是低版本的(C:\Program Files\MySQL\MySQL Connector C 6.1\lib\下面最高是vs12,没有vs14)

变更环境变量记得重启terminal

结果

一 一搞定上述三个问题后终于完成diesel_cli的安装,此过程脑海中一遍遍响起可爱多的 “这就是翔,一坨一坨的翔”
安装完成

参考资料

  1. https://blog.csdn.net/leo__1990/article/details/89893951
    windows上安装MySQL 8 依赖Microsoft Visual C++ 变化

  2. https://blog.csdn.net/u012814856/article/details/76343540
    问题解决:error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1800”不匹配值“1900”

  3. https://baike.baidu.com/item/_MSC_VER/9468279?fr=aladdin
    visual studio版本和MSC_VER的值

  4. https://github.com/diesel-rs/diesel/issues/1286
    在官方的issue里,解决方案众说纷纭。

  5. https://blog.csdn.net/wangmarkqi/article/details/104618575
    前人遇到坑(我比它还多一个)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值