日期:2013-05-29  浏览次数:20625 次


使用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和我进行讨论。好运!

** 本文档遵照美国自在软件基金会通用文档答应协议发布 **