mysql数据库 生成 lib_为 DEV-C++ 生成 libmysql.a 的过程 及 windows下 devc++ c语言访问mysql数据库 环境配置...

本文内容包括两部分:

一。 为 DEV-C++ 生成 libmysql.a 的过程

二。windows下 devc++ c语言访问mysql数据库 环境配置

一。为 DEV-C++ 生成 libmysql.a 的过程

目的:因为DEV-C++ 使用的编译器是gcc, 而 MySQL自带的libmysql.dll 只支持Visual Stdio。为此,需要从libmysql.dll 生成libmysql.a。

使用的命令是:

Dlltool  --input-def   libmySQL.def  --dllname  libmySQL.dll  --output-lib libmySQL.a -k

为使上一命令正确执行,需要注意以下几点:

(1)       dlltoll.exe  存在于 DEV-C++ 目录下(C:\Program Files\DEV-CPP\mingw32\bin);而 libmySQL.def 和 libmySQL.dll 存在于 MySQL目录下。首先需要把libmySQL.def 和 libmySQL.dll 拷贝到dlltoll.exe 所在的目录。而不是相反,把dlltoll.exe 拷贝 到MySQL目录下libmySQL.dll所在的目录。这是 因为libmySQL.dll  的全路径上,有 “MySQL server 5.1”,中间有空格,这会影响 dlltool 命令的执行,产生错误信息

考虑到 dlltoll.exe 存在于 C:\Program Files\DEV-CPP\mingw32\bin中,因此可以把 libmySQL.dll 拷贝到此目录

“…….installation problem Cannot exec ‘as’”

(2) 上一命令中的libmySQL.def 不是,MySQL安装后即存在的那个文件。而是必须使用下面的命令,基于libmysql.lib 生成。

Reimp  -d   libmysql.lib (似乎reimp 并不包含在DEV-C的安装包中,需要另外下载)

可以通过比较新生成的 libmySQL.def  和 在另一目录下的 MySQL 自带的同名文件的大小,发现两者是不同的。若错误地使用MySQL 自带的libmySQL.def文件,执行dlltool命令时会出现一系列类似下面的错误信息。

undefined reference to `mysql_real_query@12'

Reimp包含在 mingw-utils中,因此需要下载  mingw-utils。注:如果在DEV-C中的 Project ---Project Option --- Parameters Linker 中不指定 libmySQL.a 的全路径,也会出现类似

undefined reference to `mysql_init@4' 这样的错误。

(3) 生成libmySQL.a 后,还需要在DEV-C++的 ‘Project Option’ | Compiler Options | Linker Sheet 在linker 一栏添上libmySQL.a 的全路径(含文件名)。

二.  windows下 devc++ c语言访问mysql数据库 环境配置

参考了以下两篇文章

(1) http://hi.baidu.com/leeyou1450/blog/item/78fdd438ec9986f63a87ceaa.html

(2) http://hi.baidu.com/leeyou1450/blog/item/ede27dd8f488bdec39012fa9.html

但是虽然自己也是用的 DEV-C 4.9.9.2版,WindowsXP系统,按照这两篇文章的指示设置却不成功,对其进行了一些改进。具体情况如下。

a) 要想在程序中使用mysql数据库,需要在

Project |‘Project Option’ | Compiler Options | Linker Sheet 在linker 一栏添上libmySQL.a 的全路径

b) 想在程序中使用多线程,需要在 Project | Project Option’ | Compiler Options | Linker Sheet 在linker 一栏添上

C:\Program Files\DEV-CPP\Lib\libws2_32.a (据网上文章说 同目录下的文件 libwsock32.a 是旧版,因此应用libws2_32.a)

c) 有网文推荐 在 Project |‘Project Option’ | Compiler Options |的 Copliler 和 C++ Compiler 框中添加

-Wall 和-W

d) 在 Project |‘Project Option’ | Directories | Include Directories 下添加

C:\Program Files\MySQL\mysql-5.1.38-win32\include

这样在 xxx.cpp文件中才可以包含 #include "mysql.h"。

奇怪的是,在 Tools---Compiler Options---Directories --- C Includes 或 C++ Includes中包含

C:\Program Files\MySQL\mysql-5.1.38-win32\include

不起作用

e) Tools---Compiler Options---Directories---Libraries 下添加

C:\Program Files\MySQL\mysql-5.1.38-win32\lib\opt

可以用下面的代码测试DEV-C的环境设置是否正确

#include

#include

using namespace std;

#include

#include "mysql.h"

#include

#include

#include

/*

int main()

{

WSADATA wsadata;

WSAStartup(0x101, (LPWSADATA)& wsadata);

system("PAUSE");

return 0;

}

*/

int main()

{

MYSQL mysql;      //mysql连接

MYSQL_RES *res; //这个结构代表返回行的一个查询结果集

MYSQL_ROW row; //一个行数据的类型安全(type-safe)的表示

char *query; //查询语句

int t,r;

mysql_init(&mysql);

if (!mysql_real_connect(&mysql,"localhost", "root", "", "mysql",3306,NULL,0))

{

printf( "Error connecting to database%s\n",mysql_error(&mysql));

} else

printf("Connected...\n");

query="SET CHARACTER SET GBK"; //设置编码

t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));

if(t)

{

printf("编码设置失败\n");

}

query=" select * from user ";

t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));

if(t)

{

printf("执行查询时出现异常: %s",mysql_error(&mysql));

}else

printf("[%s] 构建成功 \n",query);

res=mysql_store_result(&mysql);

while(row=mysql_fetch_row(res))

{

for(t=0;t

{

printf("%s:   ",row[t]);

}

printf("\n");

}

mysql_free_result(res);

//sleep(1);

scanf("%d",&t);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值