使用Lccwin32進行MySQL開發。
2024-07-24 12:55:28
供稿:網友
使用lccwin32進行mysql開發。
當前作者:王猛 ([email protected])
創建日期: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/ )
** 如果您有什么問題,可以通過電子郵件[email protected]和我進行討論。好運!
** 本文檔遵循美國自由軟件基金會通用文檔許可協議發布 **