wsk3q

导航

mysql client C API库VisualStudio 2022编译

在windows平台 mysql client  C API库已经随着 mysql server安装包一起安装了,可以很容易找到。

libmysql.dll和libmysql.lib就是了,使用的CRT默认是 /MD。

还在static library版的,名字叫 mysqlclient.lib

我这边有时比较蛋疼,需要 /MT版的dll. 官方没有直接提供,只能自己编译了。

由于官方没有把 client C API的代码独立出来,所以要编译的话,只能直接使用mysql server的源码了。

Building MySQL Server also builds libmysqlclient; see Installing MySQL from Source.
It cannot be built alone, but configuring with the optional -DWITHOUT_SERVER=ON CMake option is related.

(1)下载源码

在这个网址,选择source code就行了

https://dev.mysql.com/downloads/mysql/

不过注意,我们要下载包含boost的版本,另外一个我已经试过了,搞了三个小时各种缺东西!

用这个可以省去你很多麻烦:

All Operating Systems (Generic) (Architecture Independent), Compressed TAR Archive
Includes Boost Headers

于是,下载了个 mysql-boost-8.0.30.tar.gz 包。

 

(2)解压,使用cmake进行配置,编译。根据文档, -DWITHOUT_SERVER=ON 参数是至关重要的。

不然,一不小心编译了个完整的mysql server出来,那就很恐怖了。。。

openssl 是需要自己另外准备的库。

 

(3)配置cmake

# 我这里编译的是x86版本,去除以下的 -A Win32就是x64版本了。

# 这里指定了boost路径,不过这个boost已经在解压出来的目录了。

# 期间发现一个有意思的情况,我系统的boost是1.79, 结果cmake报错,要求必须是1.77, 晕死~~

mkdir build

cd build
cmake .. -A Win32 -DWITH_NDBCLUSTER=off -DWITH_UNIT_TESTS=off -DWITHOUT_SERVER=on -DWITH_BOOST=D:\mysqlSrc\mysql-8.0.30\boost\boost_1_77_0  -DOPENSSL_ROOT_DIR=D:\compiled\openssl\Compiled\x86 -DCMAKE_INSTALL_PREFIX=d:\temp\mysql

默认是以 /MD,/MDd 方式使用CRT runtime的。

我这里由于需要 /MT的,所以就很悲催地,打开了 mysql.sln, 逐个逐个项目地改成 /MT.

都改完之后,就可以编译了。

可以直接使用cmake命令行:

cmake --build . --config Release --target install

 

于是在目标安装目录下的lib就有了(两个openssl dll是我自己拷贝过来的):

libmysql.dll
libmysql.lib
mysqlclient.lib

libssl-3.dll
libcrypto-3.dll

另外,我花了三个小时尝试使用mingW来编译,最终发现 mysql的CMake配置文件对mingW不够友好,凡是WIN32的情况,都只认为是VC编译器。

一堆的编译报错,后来我都怀疑人生了,放弃。。。

(完)

 

posted on 2022-07-30 16:29  wsk3q  阅读(776)  评论(1编辑  收藏  举报