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编译器。
一堆的编译报错,后来我都怀疑人生了,放弃。。。
(完)