[转]Windows下用GCC连接MySQL数据库

原帖地址:http://blog.csdn.net/mzlogin/article/details/5605320

 一个网友在坛子上问到的问题,说用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,测试源码如下:

#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

posted on 2014-07-05 16:06  no1yizhe  阅读(852)  评论(0)    收藏  举报

导航