由于目前官方发布的MySQL-connector-c++还只能支持vs2008,要在vs2013、vs2015项目中使用,只能自己编译一份啦,下面是自己摸索出的只用vs2015编译的方法,另后面附上一篇CMake+VS编译的方法,做个记录吧。
只用VS2010编译mysql-connector-c++
0 准备:
1)安装mysql服务器
2)安装boost库
3)下载并解压mysql-connector-c++-noinstall-1.1.7(http://www.mysql.com/downloads/connector/cpp/)(windows)
4)下载并解压mysql-connector-c++-1.1.7(http://www.mysql.com/downloads/connector/cpp/)(source code)
5)下载并解压mysql-connector-c++源码备用,以下简称“源码”
1 新建项目
打开VS2015,新建Win32 DLL项目“mysqlconn”,选择“Empty project”
2 拷贝必要文件
1)将源码中的driver文件夹拷贝到项目文件夹mysqlconn中,
2)在项目文件夹mysqlconn中新建include目录,这里需要放两个文件夹:
a)将mysql-connector-c++ noinstall目录中的cppconn文件夹拷贝至include中
b)新建一个mysql文件夹,并将mysql服务安装目录下的include文件夹中的头文件拷贝至其中(C:\Program Files\MySQL\MySQL Server 5.7\include)
c)其中driver\nativeapi\binding_config.h.cm重命名为binding_config.h,将cmakedefine相关的代码注释,将之后的win32定义打开
version_info.h.cmake--->version_info.h
修改内容
#define MYCPPCONN_MAJOR_VERSION 1
#define MYCPPCONN_MINOR_VERSION 1
#define MYCPPCONN_PATCH_VERSION 7
#define SETUP_VERSION "1.01.0007"
#define DRIVER_VERSION "0" SETUP_VERSION
#define MYCPPCONN_VERSION 1010007
修改mysql_client_api.cpp
#ifdef MYSQLCLIENT_STATIC_BINDING
# include "libmysql_static_proxy.h"
#else
# include "libmysql_dynamic_proxy.h"
#endif
3)在项目文件夹mysqlconn中新建lib目录并将安装目录(C:\Program Files\MySQL\MySQL Connector.C 6.1\lib)libmysql.lib拷贝指其中
3 添加必要文件到项目
1)将mysqlconn中driver目录下的.h和.cpp文件加入项目(先不加子文件夹nativeapi中的文件):
项目右键->Add->New Filter,命名为“Driver”,“Driver”右键->Add->Existing Item,
找到并选中driver文件夹下的.h和.cpp文件,加入过滤器Driver中
2)再新建Native过滤器,加入driver\native中的cpp文件,注意“libmysql_dynamic_proxy.cpp”和“libmysql_static_proxy.cpp”一定不要添加,否则会出一堆错误“error LNK2005”
driver\nativeapi/mysql_private_iface.h(48): note: 参见“snprintf”的前一个定义
双击这一行,定位到mysql_private_iface.h的48行,注释掉
#if ( defined(_WIN32) || defined(_WIN64) ) && !defined(snprintf) #if _MSC_VER<1900 #define snprintf _snprintf #endif #endif
生成的mysqlconn.lib 和 mysqlconn.dll就可以用在vs2015项目中了