mingw环境添加mysql开发库

  今天碰巧要用到mysql进行开发,在windows的mingw平台。

0.下载mysql

  http://cdn.mysql.com/Downloads/MySQL-5.1/mysql-noinstall-5.1.73-win32.zip

  下载这个绿色版的。然后解压到D盘下,复制一份ini配置文件,修改部分选项,并启动服务,详细看我以前的博客

  http://www.cnblogs.com/wunaozai/p/3641589.html

1.开发安装完了之后就进行开发,下面这个是一个示例程序

 1 #include <stdio.h>
 2 #include <windows.h>
 3 #include <mysql.h>
 4 #include <winsock2.h>
 5 
 6 int main(int argc,char *argv[])
 7 {
 8     MYSQL conn;
 9     int res;
10     mysql_init(&conn);
11     if(mysql_real_connect(&conn,"localhost","root","","test",0,NULL,CLIENT_FOUND_ROWS)) //"root":数据库管理员 "":root密码 "test":数据库的名字
12     {
13         printf("connect success!\n");
14         res=mysql_query(&conn,"insert into test values(‘user‘,‘123456‘)");
15         if(res)
16         {
17             printf("error\n");
18         }
19         else
20         {
21             printf("OK\n");
22         }
23         mysql_close(&conn);
24     }
25     return 0;
26 }

  要把mysql安装程序中的include复制到开发环境中。然后还有构造一个libmysql.a这种静态链接库。
  官方mysql的win发行版是由vc编译,产生的lib无法被mingw链接。链接时会抛出未定义错。

  具体的办法如下 在include文件夹中复制 libmysql.def 到 lib目录,在lib目录执行下面这句

  dlltool --input-def libmySQL.def --dllname libmySQL.dll --output-lib libmysql.a -k  (dlltool 工具是mingw自带)

  此时会生成一个libmysql.a文件。然后把这个文件复制到开发环境中,就基本是可以了。

  我们弄好了这些后就编译一下,

  g++ main.cpp -o main.exe -Iinclude -L. -lws2_32 -lmysql 

  居然会出现这种错误

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\cc8HIzrA.o:main.cpp:(.text+0x68): undefined reference to `mysql_init@4C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\cc8HIzrA.o:main.cpp:(.text+0xb1): undefined reference to `mysql_real_connect@32C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\cc8HIzrA.o:main.cpp:(.text+0xdf): undefined reference to `mysql_query@8C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\cc8HIzrA.o:main.cpp:(.text+0x11d): undefined reference to `mysql_close@4collect2.exe: error: ld returned 1 exit status
make: *** [main] Error 1

  解决如下
  打开libmysql.def修改对应出错的地方如

技术分享

  就像这样,在后面手动增加数字,然后重复上面的操作,重新用dlltool生成一次libmysql.a链接库

  到这里就可以用了。

 

 

参考资料

http://www.cnblogs.com/cy163/archive/2009/10/03/1577812.html

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。