zoukankan      html  css  js  c++  java
  • 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!
    ");
    14         res=mysql_query(&conn,"insert into test values('user','123456')");
    15         if(res)
    16         {
    17             printf("error
    ");
    18         }
    19         else
    20         {
    21             printf("OK
    ");
    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~1ADMINI~1LOCALS~1Tempcc8HIzrA.o:main.cpp:(.text+0x68): undefined reference to `mysql_init@4'
    C:DOCUME~1ADMINI~1LOCALS~1Tempcc8HIzrA.o:main.cpp:(.text+0xb1): undefined reference to `mysql_real_connect@32'
    C:DOCUME~1ADMINI~1LOCALS~1Tempcc8HIzrA.o:main.cpp:(.text+0xdf): undefined reference to `mysql_query@8'
    C:DOCUME~1ADMINI~1LOCALS~1Tempcc8HIzrA.o:main.cpp:(.text+0x11d): undefined reference to `mysql_close@4'
    collect2.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

  • 相关阅读:
    算法竞赛入门经典习题2-3 韩信点兵
    ios入门之c语言篇——基本函数——5——素数判断
    ios入门之c语言篇——基本函数——4——数值交换函数
    144. Binary Tree Preorder Traversal
    143. Reorder List
    142. Linked List Cycle II
    139. Word Break
    138. Copy List with Random Pointer
    137. Single Number II
    135. Candy
  • 原文地址:https://www.cnblogs.com/wunaozai/p/4528394.html
Copyright © 2011-2022 走看看