您的位置:首页 > 编程语言 > C语言/C++

VS2010编译mysql-connector-c++

2013-02-23 11:53 381 查看
由于目前官方发布的mysql-connector-c++还只能支持vs2008,要在vs2010、vs2012项目中使用,只能自己编译一份啦,下面是自己摸索出的只用vs2010编译的方法,另后面附上一篇CMake+VS编译的方法,做个记录吧。

只用VS2010编译mysql-connector-c++

0 准备:

1)安装mysql服务器

2)安装boost库

3)下载并解压mysql-connector-c++-noinstall-1.1.2(http://www.mysql.com/downloads/connector/cpp/)

4)下载并解压mysql-connector-c++源码备用,以下简称“源码”

1 新建项目

打开VS2010,新建Win32 DLL项目“mysqlconn”,选择“Empty project”

2 拷贝必要文件

1)将源码中的driver文件夹拷贝到项目文件夹mysqlconn中,

2)在项目文件夹mysqlconn中新建include目录,这里需要放两个文件夹:

a)将mysql-connector-c++ noinstall目录中的cppconn文件夹拷贝至include中

b)新建一个mysql文件夹,并将mysql服务安装目录下的include文件夹中的头文件拷贝至其中

c)其中binding_config.h.cm重命名为binding_config.h,将cmakedefine相关的代码注释,将之后的win32定义打开

3)在项目文件夹mysqlconn中新建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”

4 设置项目属性

1)C/C++增加“附加包含目录”:

mysqlconn下的include

mysqlconn下的include下的cppconn

mysqlconn下的include下的mysql

boost目录

2)设置预处理器定义:

WIN32;_DEBUG;_LIB;mysqlcppconn_EXPORTS

3)设置链接器

添加“附加包含目录”:mysqlconn下的lib文件夹

添加“附加依赖项”:libmysql.lib

5 编译

生成的mysqlconn.lib 和 mysqlconn.dll就可以用在vs2010项目中了

CMake+VS编译

转自:/article/5446508.html

软件环境:

win8 build8200 64位版本,

visual studio 2012,

mysql 5.5.28,

mysql connector c++ 1.1.1

从官网上下载了mysql connector c++ 1.1.1以后,使用封装的类连接时出了很多令人十分蛋疼的问题。

1.缺少sqlstring.h头文件---->下载noinstall版本,里面有这个文件。

2.需要boost环境---->下载boost库,然后编译,然后加入头文件和库文件搜索路径到工程中。

3.使用result->getString();崩溃。---->下面详细说明此问题。

原因是官方提供的库文件版本与需要的库版本不匹配,提供的debug版本使用的是MT版本,在debug模式下会出现内存错误,导致crash。只是根本原因,至于加入msvcrt.lib等库文件等解决办法,毫无作用。经过试验,只能使用如下办法:

1.下载mysql connector c++ 1.1.1 源代码,解压到非系统盘下(涉及权限问题)。

2.下载cmake

3.配置MYSQL_DIR指向mysql server的路径。

4.配置BOOST_ROOT指向boost库路径。

5.把cmake添加到PATH中。

6.然后使用visual studio 2012 自带的命令终端进入mysql connector c++ 1.1.1解压后的目录中,不建议使用一般终端,因为可能会有环境变量没配置的情况。

7a.输入cmake -G "Visual Studio 11 Win64".

8a.输入devenv.com MySQLCPPCONN.sln /build Release,这样编译出来的库版本是Release版本,dll在driver/Release目录下。

7b.输入cmake -G
"Visual Studio 11 Win64" -DCMAKE_BUILD_TYPE=Debug

8b.输入devenv.com
MySQLCPPCONN.sln /build Debug,这样编译出来的库版本是Debug版本,dll在driver/Rease目录下。

然后把相应的库拷贝到工程的Debug,Release目录下,配置工程属性中的c/c++-->Code
Generation-->Runtime Library为MDd,就是Debug版,如果是MT,就是Release版本。这样上面的问题就解决了。

PS:我的是64位环境,如果是win32的,相应的参数可以使用cmake
--help来查看,然后替换即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: