Windows下用GCC连接MySQL数据库

一个网友在坛子上问到的问题,说用MinGW GCC编译运行一个连接MySQL数据库的程序时遇到错误:

```
undefined reference to `mysql_init@4'
undefined reference to `mysql_real_connect@32'
undefined reference to `mysql_close@4'
```

我遂去 MySQL 官网下了个最新的 Windows C Connector,然后按正常思路写了个最简单的连接测试程序,果然出现了同样的错误。

后来在网上查了下,也看了下 MySQL 官网上别人的讨论,据称 MySQL 官方下载的 Windows C 开发包只能原生态支持 CL 编译器,而用 GCC 也并非不可,只是需要做一些额外的工作。先将后来试验成功的步骤笔记于此,主要参考有 <http://dev.mysql.com/doc/refman/5.0/en/windows-client-compiling.html>。

先下载一下 MinGW 工具包,下载地址是 <http://prdownloads.sourceforge.net/mingw/mingw-utils-0.2.tar.gz?download>

解压,将此工具包中的bin目录加入系统环境变量的Path变量。

在 MySQL 开发包的 lib 目录下,即 libmysql.lib 和 libmysql.dll 的所在目录,运行

```
reimp -d libmysql.lib
```

得到导出文件 LIBMYSQL.def,

然后在此目录运行 MinGW GCC 本身自带的命令

```
dlltool -k -d libmysql.def -l libmysql.a
```

得到我们最后需要链接的库文件 libmysql.a。

在 MySQL 开发包的目录下(即与 include 和 lib 同级)新建我们的测试文件 main.c,测试源码如下:

```c
#include <stdio.h>
#include <winsock2.h>
#include "mysql.h"
int main()
{
    MYSQL mysql; mysql_init(&mysql);
    if(!mysql_real_connect(&mysql, "localhost", "root", "admin", "demo", 3306, NULL, 0))
    {
        printf("/nconnect error!");
    }
    else
    {
        printf("/nconnect success!/n");
    }
    mysql_close(&mysql);
    return 0;
}
```

在源文件所在路径运行编译命令:

```
gcc -Iinclude -Llib main.c -llibmysql
```

即编译成功。数据库亦连接成功。

测试环境:

操作系统:Windows XP Prefessional sp2

数据库版本:MySQL-5.0.22-community-nt

连接器版本:mysql-connector-c-noinstall-6.0.2-win32

编译器:GCC for windows 4.5.0
 

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值