windows 10 64位环境下codeblocks+wxWidgets+mysql++数据库开发环境搭建

开发环境

操作系统:            windows 10 x64
集成开发环境:     code blocks 17.12
64位编译器:        mingw32-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0版本
mysql连接器:     mysql-connector-c-6.1.0-winx64.msi
mysql开发包:     mysql++3.2.4

编译安装

  1. 下载 Mingw32-w64 开发包 并安装
  2. 下载 MySQL++ 开发包 并解压
  3. 下载 mysql-connector-c-6.1.0-winx64.msi 并安装到C盘
  4. 打开命令行,进入mysql+±3.2.4 解压目录 输入 mingw32-make -f Makefile.mingw 开始编译 mysql++
  5. 编译成功后,在 mysql+±3.2.4 源代码目录中会看到下面四个文件
libmysqlpp.a
libmysqlpp_excommon.a
libmysqlpp_ssqls2parse.a
mysqlpp.dll
  1. 在工程目录中新建一个 lib目录,将上面.a 文件拷贝到里面
  2. 配置工程依赖的lib库和搜索路径,如下图所示:
    配置lib库
    配置搜索路径
    配置linker搜索路径
  3. 拷贝 mysql connector/c 6.1 安装目录中的 libmysql.lib, mysqlclient.lib 文件到 工程lib 文件中
  4. 拷贝 mysqlpp.dll, libmysql.dll (在 mysql connector/c 6.1 目录中) 文件到 工程可执行文件 的 bin 目录中

调试错误

1.无法正常连接MySQL服务器

[debug]Thread 1 received signal SIGSEGV, Segmentation fault.
[debug]0x000000006b3c4acc in mysqlpp::DBDriver::connect_prepare (this=0xc036d0) at lib/dbdriver.cpp:107
[debug]D:\work_c++\mysql++-3.2.4\lib\dbdriver.cpp:107:2738:beg:0x6b3c4acc

错误原因: 本地安装的MySQL服务器 是 win-x64-8.0 版本, 而编译 MySQL++ 采用的lib库是5.7 版本. 版本不兼容引起的.
解决办法: 卸载8.0版本 MySQL服务器,重新下载5.7版本的 MySQL服务器安装包 重新安装

2.无法正常查询SQL语句

[debug]Thread 1 received signal SIGSEGV, Segmentation fault.
[debug]0x00007fff8de481ed in mysql_send_query () from D:\work_c++\rocket\bin\Debug\libmysql.dll

错误原因: 代码本身引起的错误,虽然能编译通过,但是执行的时候会爆段错误,由指针引起的
解决办法: 修正指针引起的段访问错误

// 错误的代码
mysqlpp::Connection conn = new mysqlpp::Connection("test","127.0.0.1","root","root");
mysqlpp::Query query = conn.query("select * from stock");
// 正确代码一
mysqlpp::Connection conn("test","127.0.0.1","root","root");
mysqlpp::Query query = conn.query("select * from stock");
// 正确代码二
mysqlpp::Connection *conn = new mysqlpp::Connection("test","127.0.0.1","root","root");
mysqlpp::Query query = conn->query("select * from stock");

3. mysql.h 找不到 SOCKET 定义

C:\Program Files\MySQL\MySQL Connector C 6.1\include\mysql.h|67|error: 'SOCKET' does not name a type|
C:\Program Files\MySQL\MySQL Connector C 6.1\include\mysql_com.h|320|note: in expansion of macro 'my_socket'|

错误原因: mysql 官方提供的 connector/c 6.1 有很多个版本, 6.1.0, 6.1.1, 6.1.5, 6.1.10,经过不断验证,在G++编译器中只有 6.1.0 能正常工作, 而且还要修正上面的 SOCKET 类型错误, SOCKET 类型错误,是因为在 windows G++编译环境下 没有引入 <winsock2.h> 头文件的缘故
解决办法:在 mysql.h 文件中

#ifdef __LCC__
#include <winsock2.h> 
#endif

如上依葫芦画瓢 增加下面G++编译器条件宏指令,使得windows G++编译环境下,也包含<winsock2.h>文件

#ifdef __GNUC__
#include <winsock2.h>
#endif

4. 其他注意事项

codeblock 自带的 mingw 编译环境是 32位的,因此需要从网上下载 64位的 mingw,并重新配置 compiler 和 debugger 选项,如下图所示,否则会引起不必要的麻烦.
配置mingw32-x64 环境

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值