使用Lccwin32进行MySQL开发。
当前作者:王猛 (HeartIcy@163.com)
创建日期:2003年2月11日
修订版本:1.1
我是一个学生,或许是这辈子永远都是一个学生。因为我从来没想过我会成
为一代宗师!!^^||正因为我是学生,所谓我需要挑选对标准支持完整而且
容易获得的免费编译器。lccwin32对标准的支持度非常高,并且扩展性也很
强劲。通常遵循C89或C99标准编写的开发库,头文件部分基本不用修改,只
要转换库文件(.lib)的格式就可以用了。
我将通过一个简单的例子演示如何通过Lccwin32进行MySQL的开发。重点的地
方不是代码部分,而是编译器的配置lccwin32本身的IDE编辑器部分对中文的
支持等于0,并且在头文件引用路径设置上存在bug,我们要手工处理!这也是
我认为写这篇笔记的重要性。(我从来不认为我写的东西是什么文章,我还没
那种分量。^^||)
刚才提到了lccwin32编辑器有bug,我们需要手工修改编译器产生的makefile
文件否则根本无法编译。
假设你是采用默认路径,则lccwin32编辑器自动产生的makefile文件中应该包
含类似子段:
CFLAGS=-I"c:\lcc\include" -O -p6 -unused -ansic
我们如果直接从编辑器添加多头文件引用路径会产生错误,因此我们手工添加
路径变成下边这种形式:
CFLAGS=-I"c:\lcc\include" -I"c:\mysql\include" -O -p6 -unused -ansic
ok!第一个问题头文件引用解决了。
现在我们开始解决下一个问题库文件(.lib)。windows的mysql库文件采用vc5编
译,我们要先利用lccwin32附带的库转换工具进行转化。转换之后lccwin32就可
以正常识别此库文件。那么重要的问题是我们如何引入库文件。Lccwin32中我们
可以使用两种方法,第一种方法就是从编辑器的库引用中直接敲入库名称;另外
一种就是利用编译器的预处理器伪指令#pragma lib "库"。我推荐采用第二种,
因为开发过程中我们需要debug版库文件进行debuger,实际发行中为了效率我们
则需要用opt版生成最终发行文件,在lccwin32这套环境中直接在编辑器中进行设
置是不明智的!
现在我们解决了头文件和库文件的引用,实际上已经没有什么问题。一个简简单
单的例子如下:
#pragma lib <libmysql.lib>
#include <stdio.h>
#include "mysql.h"
MYSQL *myData;
int main(int argc, char *argv[])
{
char userid[20];
strcpy(userid, "root"); // 账号
char password[20];
strcpy(password, ""); // 密码
char host[20];
strcpy(host, "localhost"); // 主机
char dbName[10];
strcpy(dbName, "test"); // 数据库
if ( (myData = mysql_init((MYSQL*) 0)) &&
mysql_real_connect(myData, host, userid, password, dbName, MYSQL_PORT, NULL, 0))
printf("Mysql ready\n");
else
exit(0);
mysql_close( myData ) ;
return 1;
}
如果完全依照本文,已经产生一个3.03kb或13.03kb(debuger)的可以执行文件。顺便说,
我不知道现在还有比拼产生的可执行文件体积不。mysql官方例程用lccwin32编译后体积
只有vc产生的可执行文件大小的1/5!
** 适用范围MySQL3.23.x以上 ( www.mysql.com )
** lccwin32 3.2以上 ( www.cs.virginia.edu/~lcc-win32/ )
** 如果您有什么问题,可以通过电子邮件HeartIcy@163.com和我进行讨论。好运!
** 本文档遵循美国自由软件基金会通用文档许可协议发布 **