• 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

  • 相关阅读:
    ES6中的reduce
    go.js 基本配置
    ES6(十二)类与对象
    ES6(十一)Proxy和Reflect
    ES6(十)map、set与数组和对象的比较
    ES6(九)set、map数据结构
    ES6(八)Symbol
    ES6(七)对象扩展
    hbase常识及habse适合什么场景
    Hbase与传统数据库的区别
  • 原文地址:https://www.cnblogs.com/wunaozai/p/4528394.html
Copyright © 2020-2023  润新知