使用Lccwin32進行MySQL開發。
來源:互聯網
上載者:User
mysql
使用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和我進行討論。好運!
** 本文檔遵循美國自由軟體基金會通用文檔許可協議發布 **