版本:
系统版本: win7 64
mysql++版本:3.2.0 下载地址:http://tangentsoft.net/mysql++/
mysql版本:5.6.14 下载地址:http://dev.mysql.com/downloads/mysql/
编译步骤:
一. mysql++编译步骤
1. 解压mysql,注意mysql版本,64和32位。将mysql目录下lib(里面包含libmysql.lib,libmysql.dll,libmysqld.lib, libmysqld.dll。其中前2个为release版本,后2个为debug版本,在编译软件的时候,需要选择自己软件对应的版 本) 和include目录拷贝出来,这两个目录需要随后期mysql++库一起使用
2. 使用vs2005 - vs2012系列软件打开mysql++, 在附加包含头目录中添加第一步拷贝出的include目录路径;在附加 包含lib库路径中 添加第一步中拷贝出的lib目录(mysql 5.6.14中,debug版本和release版本的libmysql.lib libmysql.dll都在同一个lib目录中,早期的mysql版本分别在lib/debug和lib/opt目录中);在依赖lib库中加入mysql 库,如果是 debug版本使用libmysqld.lib,release版本使用libmysql.lib。
3. 编译mysqlpp,我使用的vs2012,在mysql++-3.2.0\vc2012\x64\Debug路径下会生成mysqlpp_d.lib和mysqlpp_d.dll 文件(如果是release会生成mysqlpp.lib和mysqlpp.dll)。使用mysql++-3.2.0目录中的install.hta工具,将 mysql++的头文件目录释放到指定位置。释放出来的inlude目录和编译生成的lib和dll文件即可以给其他代码使用 了。当然还要附带上第一步中mysql的include和lib目录。
问题记录:
1.
问题描述:
编译出mysqlpp_d.lib和mysqlpp_d.dll后,新建测试程序,附加包含头目录中添加mysql中提取的include目录和 mysql++中释放出的include目录。附加包含lib库路径中添加mysql的lib库路径和mysqlpp_d.lib与mysqlpp_d.dll的存 放路径。
代码内容如下:
#include <stdio.h>
#include "mysql++.h"
#pragma comment(lib, "mysqlpp_d.lib")
int main()
{
mysqlpp::Connection con(false);
if (!con.connect("domindb", ".", "11", "22", 4567))
{
return 1;
}
return 0;
}
提示错误:
error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl mysqlpp::Connection::Connection(bool)" (__imp_??0Connection@mysqlpp@@QEAA@_N@Z) referenced in function main
问题原因:
win7 64下默认编译出来的lib库为64位,而我们测试程序是32位的,导致连接失败。
修改方案:
一. 修改测试程序为X64,编译通过
二. 编译lib库位32位
备注(方便以后查看):
1. 如果设置编码错误,可能是编译的编译器有什么配置有区别。目前测试成功搭配
win32(debug):使用vs2012打开目录下2005工程目录,lib选择(libmysql.dll,libmysql.lib),编译选择/MDd
推测:win32(Release):使用vs2012打开目录下2005工程目录,lib选择(libmysql.dll,libmysql.lib),编译选择/MD
win64(debug):使用vs2012打开目录下2008工程目录,lib选择(libmysql.dll,libmysql.lib),编译选择/MDd
推测:win64(Release):使用vs2012打开目录下2008工程目录,lib选择(libmysql.dll,libmysql.lib),编译选择/MD