使用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和我进行讨论。好运!
** 本文档遵循美国自由软件基金会通用文档许可协议发布 **
[MySql]PHP存取 Mysql 数据乱码终极解决方案 [MySql]解决Table xxx is marked as crashed and should … [MySql][MySQL]快速解决"is marked as crashed and shoul… [MySql]MySQL DELETE语法用法详解 [MySql]mysql中时间日期格式化 [MySql]修改mysql导入文件大小限制 [其他]MySql常用命令大全 [Web开发]把ACCESS的数据导入到Mysql中的方法详解 [MySql]解决mysql 1040错误Too many connections的方法 [系统软件]利用crontab系统每天定时备份MySQL数据库
|