VS2013下编译MySQL Connector/C++ 1.1.8并适配双平台
2026/9/18 22:15:41 网站建设 项目流程

简介:面向需要在 Visual Studio 2013 中编译并使用 MySQL Connector/C++ 的 Windows C++ 开发者,这份资源把 32 位与 64 位连接库的构建过程整合成可直接参考的工程包,重点解决 Windows 下头文件与依赖库配置、lib/dll 生成等常见问题。压缩包共 63 个文件,约 24.98MB,包含 21 个头文件、20 个库文件、9 个 DLL 文件、示例源码与工程配置文件;头文件覆盖驱动、连接、预处理语句、结果集等关键接口,库文件按 debug/release、win32/x64 分类,另外保留 sln 与 vcxproj 工程文件,可直接打开查看或调整链接器、包含目录设置。核心示例 MysqlTest 演示了连接数据库、执行 SQL、遍历结果集以及关闭连接的完整流程,同时工程中还保留了 pdb、exp、ilk 等构建产物,便于查看符号和定位链接错误。已有 510 人学习下载,适合希望快速在 VS2013 中集成 MySQL 数据库能力、又不想从零摸索编译配置的初学者,也可作为已有项目切换 32 位或 64 位构建时的对照参考。 老项目还在用VS2013的时候,最麻烦的往往不是业务逻辑,而是第三方库的适配。前阵子我接手一个Win32/Win64双平台的数据同步模块,数据库要从SQLite切到MySQL,于是面对一个很现实的问题:怎么在VS2013里把Mysql Connector C/C++编译出来,并保证两个平台都能正常调用。官方预编译包不是没有,但版本新了,编译器要求也跟着提高,VS2013根本扛不住;版本旧了又找不到官方二进制。最后我直接从源码编译,把win32/win64两套库全部做出来,再用一段示例代码验证整条链路可用。这篇博客就是完整记录这次编译过程和踩坑经历,适合还在维护老工程但需要对接MySQL的C++开发同学,也适合想搞懂Connector/C++依赖关系的人。

1. 项目概述与版本选型思路

1.1 核心需求拆解

"编译一个库"其实包含好几件事。表面需求是用VS2013编译Mysql Connector C/C++,但拆开看,至少有三个隐性要求。一是编译器兼容性,VS2013对C++11的支持不完整,很多新版本库的源码用到了现代C++特性,直接编译就是海量报错,所以必须挑一个对编译器宽容的版本。二是平台区分,win32和win64要产出两套完全独立的二进制,构建目录不能混用。三是工程可用性,编译完的库必须能被业务工程引用,还要有能跑的示例验证连接、查询、结果集遍历这些基本功能。如果只看标题直接下载源码编译,很容易在依赖环节卡住。

1.2 为什么选择Connector/C++ 1.1.x而不是新版

Mysql Connector/C++有两个主要分支。一个是1.1.x,API风格接近老JDBC,使用sql::Connection、sql::Statement、sql::ResultSet这套对象模型,编译期依赖Boost头文件,对编译器要求相对宽松,是VS2013环境下的合理选择。另一个是2.x之后的新架构,加入了X DevAPI、X Protocol支持,代码大量使用C++11甚至更新的特性,VS2013编译起来非常痛苦,官方新版本也不再兼容老编译器。即便8.0/9.0连接器保留了经典API,底层构建要求也提高了不少。当时我直接选1.1.x分支的1.1.8版本,算是老工程里最成熟的方案。

1.3 依赖项梳理:Boost、MySQL客户端、CMake

动手之前要确认三块依赖。第一是MySQL客户端库,它干的是底层网络协议和SQL协议的活,Connector/C++只是在其上封装出一层C++对象。我们需要MySQL安装目录下的include和lib,以及libmysql.dll。第二是Boost,1.1.x源码里会用到boost/property_tree之类的头文件,好在这些功能只依赖头文件,不需要预编译Boost库,省了编译Boost的时间。第三是CMake,负责生成VS2013解决方案。CMake版本不能太新,3.19左右对VS2013生成器的支持最省心,太新的CMake生成器策略已经向新版本Visual Studio偏移,反而容易出幺蛾子。

2. 环境准备与依赖处理

2.1 VS2013补丁与CMake版本搭配

VS2013必须把补丁打到Update 5。老项目机器如果长期没更新,编译器基础版本很旧,Connector/C++ 1.1.8源码是从比较老的时代延续下来的,没打补丁会冒出一堆C2664、C2440这类编译错误,都是标准库和链接器层面的兼容问题。CMake建议装3.19.8,安装时勾选添加到系统PATH,后面命令行直接用。如果你机器上已经装了新版CMake也没关系,只要在项目构建目录里显式指定cmake版本路径即可。另外,构建机和部署机可以是不同机器,但一定要保证编译产物和运行库的版本匹配。

2.2 Boost头文件准备

Boost只需要解压,不需要编译出lib。我下载的是boost_1_59_0,解压到C:\thirdparty\boost_1_59_0。路径里不要有空格,不要放在C:\Program Files这类带空格的目录下,否则CMake解析路径时会很麻烦。判断是否准备好,直接看C:\thirdparty\boost_1_59_0\boost\version.hpp存不存在。CMake配置时用-DBOOST_ROOT指定该目录,如果还是找不到,检查命令行里路径有没有写成反斜杠,建议统一用正斜杠。

2.3 获取MySQL客户端头文件与导入库

获取MySQL客户端有两种方式。一种是安装完整MySQL Server,安装完自带include和lib目录,适合已经在调试环境的机器;另一种是单独下载MySQL Connector/C的ZIP包,结构简单,解压就是include和lib。我用的本机正好装了MySQL Server 8.0,所以直接指定到安装目录。需要注意,MySQL Server客户端库的位数要和目标工程一致,32位程序必须搭配32位libmysql.dll,64位程序必须搭配64位,这是一个非常容易踩的坑,后面还会再强调。

3. win32/win64 全流程编译实操

3.1 用CMake生成双平台解决方案

源码解压到C:\work\mysql-connector-c++-1.1.8,在源码外新建build32和build64两个目录。因为CMake会把生成的解决方案、中间文件和缓存都放在build目录,如果共用目录,切平台时总会残留干扰,物理隔离最省心。进入build32目录执行:

cmake -G "Visual Studio 12 2013" ^ -DBOOST_ROOT=C:/thirdparty/boost_1_59_0 ^ -DMYSQL_DIR="C:/Program Files/MySQL/MySQL Server 8.0" ^ -DWITH_SSL=OFF ^ -DBUILD_STATIC=OFF ^ ..

64位在build64目录执行:

cmake -G "Visual Studio 12 2013 Win64" ^ -DBOOST_ROOT=C:/thirdparty/boost_1_59_0 ^ -DMYSQL_DIR="C:/Program Files/MySQL/MySQL Server 8.0" ^ -DWITH_SSL=OFF ^ -DBUILD_STATIC=OFF ^ ..

参数含义逐个说清楚。Visual Studio 12 2013就是VS2013的生成器名称,Win64后缀对应64位目标。BOOST_ROOT指向Boost解压目录。MYSQL_DIR是让CMake去MySQL安装目录里自动找头文件和库文件,如果你的路径结构比较特殊,建议手动指定MYSQL_INCLUDE_DIR和MYSQL_LIB_DIR。WITH_SSL=OFF表示不启用OpenSSL,省掉SSL依赖,本地环境临时测试完全够用。BUILD_STATIC=OFF表示生成动态库版本,如果我们还想顺便拿到静态库,可以改成ON,但编译时间会变长。命令执行成功后,两个build目录下都会出现mysql_connector.sln,可以进VS2013了。

3.2 在VS2013中编译并确认产物

打开对应build目录下的解决方案,工具栏平台要选对:build32生成的工程选Win32,build64生成的选x64,别选错了。配置建议选Release,Debug版虽然也能编,但业务部署时Debug会依赖额外调试运行库,不划算。右键项目列表里的mysqlcppconn项目,点生成,等待输出窗口显示成功。如果BUILD_STATIC设为ON,就还要把mysqlcppconn-static也生成一遍。生成产物不一定都在同一个地方,不同源码版本输出路径不同,最快的办法是在项目属性->常规->输出目录里看。我这边动态库的产物在构建目录下libmysql目录的对应配置文件夹里,里面能看到mysqlcppconn.dll和mysqlcppconn.lib。

3.3 编译产物的目录整理

编译完别急着关。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询