當前位置:成語大全網 - 書法字典 - 如何在Windows下編譯sqlite3,生成動態鏈接庫並使用

如何在Windows下編譯sqlite3,生成動態鏈接庫並使用

1.編譯動態鏈接庫文件

以下是我的編譯過程,可能會對妳有所幫助:

1).打開VC並創建壹個名為sqlite3的新“Win32動態鏈接庫”項目。

2).在下壹個對話框中,選擇“壹個空DLL項目”並單擊“完成”-& gt;好

3).全部復制*。c *。h *。將源代碼中的def添加到項目文件夾中。

4).添加所有的*。您下載到項目源文件中的SQLite源文件中的c文件。

註意不要在這裏添加shell.c和tclsqlite.c文件。

5).將sqlite源文件中的sqlite3.def文件添加到項目的源文件中。

6).添加所有的*。下載到頭文件的SQLite源文件中的h文件。

7).開始編譯和構建(F7)。

也許妳會在這裏遇到壹個錯誤:

e:\ zieckey \ SQLite \ SQLite 3 \ SQLite 3 ext . h(22):致命錯誤C1083:無法打開包含文件:“sqlite3.h”:沒有這樣的文件或目錄

經檢查發現,源代碼中包含的所有sqlite3.h都標有# include

這意味著編譯器在系統的默認路徑中搜索,因此當然無法搜索到頭文件sqlite3.h。

此時可以改為# include“sqlite3 . h”讓編譯器在項目路徑中搜索。

但是如果有其他地方也使用# include

好吧,妳能做到的。選擇:工具-& gt;選擇...-& gt;導演系列

在下面的Directeries選項中輸入sqlite3.h的路徑,這是您的項目目錄。

加完了,編譯壹下就行了。

最後,在項目目錄的調試目錄中生成以下兩個重要文件:

動態鏈接庫文件sqlite3.lib和導入庫文件sqlite3.lib

2.使用動態鏈接庫

讓我們寫壹個程序來測試動態鏈接庫。

在VC下創建壹個空的Win32控制臺應用程序。項目名稱為TestSqliteOnWindows。

新建壹個test.cpp的C++源程序,源代碼如下:

//名稱:test.cpp

//此程序用於測試sqlite3的C/C++ API。很簡單,哈!

//作者:zieckey

//數據:2006/11/28

# include & ltstdio.h & gt

# include & ltstdlib.h & gt

#包含“sqlite3.h“

#define _DEBUG_

int main(void)

...{

sqlite3 * db = NULL

char * zerm SG = 0;

int rc

RC = sqlite3 _ open(“zieckey . db“,& ampdb);//打開指定的數據庫文件。如果不存在,將創建壹個同名的數據庫文件。

中頻(rc)

...{

fprintf(stderr,“無法打開數據庫:%s“,sqlite3 _ errmsg(db));

sqlite3 _ close(db);

返回(1);

}

else printf(“您已經成功打開了壹個名為zieckey.db的sqlite3數據庫!恭喜妳!玩得開心!^-^ ");

//創建壹個表。如果表存在,不要創建它,給出提示並將其存儲在zErrMsg中。

char *sql =“創建表sensor data(ID整數主鍵,SensorID整數,SiteNum整數,Time VARCHAR(12),sensor parameter REAL);“;

sqlite3 _ exec(db,sql,0,0 & amp;zErrMsg);

#ifdef _DEBUG_

printf(“zerm SG = % s“,zerm SG);

#endif

//插入數據

SQL =“INSERT INTO“SensorData“值(NULL,1,1,‘200605011206‘,18.9);“;

sqlite3 _ exec(db,sql,0,0 & amp;zErrMsg);

SQL =“INSERT INTO“sensor data“值(NULL,23,45,‘200605011306‘,16.4);“;

sqlite3 _ exec(db,sql,0,0 & amp;zErrMsg);

SQL =“INSERT INTO“sensor data“值(NULL,34,45,‘200605011306‘,15.4);“;

sqlite3 _ exec(db,sql,0,0 & amp;zErrMsg);

int nrow = 0,n column = 0;

char * * azResult//存儲結果的二維數組

//查詢數據

SQL =“SELECT * FROM sensor data“;

sqlite3 _ get _ table(db,sql,& ampaz result & amp;nrow & amp;n列,& ampzErrMsg);

int I = 0;

printf(“行:%d列=%d“,nrow,n column);

printf(“查詢結果為:“);

for(I = 0;我& lt(nrow+1)* n column;i++)

printf(“az result【% d】= % s“,I,az result【I】);

//刪除數據

sql =“從SensorData中刪除其中sensor id = 1;”;

sqlite3 _ exec(db,sql,0,0 & amp;zErrMsg);

#ifdef _DEBUG_

printf(“zerm SG = % s“,zerm SG);

#endif

SQL =“SELECT * FROM sensor data“;

sqlite3 _ get _ table(db,sql,& ampaz result & amp;nrow & amp;n列,& ampzErrMsg);

printf(“行:%d列=%d“,nrow,n column);

printf(“刪除後,查詢結果為:“);

for(I = 0;我& lt(nrow+1)* n column;i++)

printf(“az result【% d】= % s“,I,az result【I】);

//釋放azResult的內存空間。

sqlite3 _ free _ table(az result);

#ifdef _DEBUG_

printf(“zerm SG = % s“,zerm SG);

#endif

sqlite3 _ close(db);//關閉數據庫

返回0;

}

此外,將sqlite3.dll文件sqlite3.hsqlite3.lib復制到項目目錄。

最後,項目-》設置在鏈接選項卡中找到對象/庫模塊:在最後填寫sqlite3.lib。

如果已經有鏈接,請用空格分隔。

現在可以編譯了。

運行結果如下:

您已經成功打開了名為zieckey.db的sqlite3數據庫!

恭喜妳!玩得開心!-

zerm SG =(null)

行:3列=5

查詢的結果是:

az result【0】= ID

az result【1】= SensorID

az result【2】= SiteNum

az result【3】=時間

az result【4】=傳感器參數

az result【5】= 1

az result【6】= 1

az result【7】= 1

az result【8】= 200605011206

az result【9】= 18.9

az result【10】= 2

az result【11】= 23

az result【12】= 45

az result【13】= 200605011306

az result【14】= 16.4

az result【15】= 3

az result【16】= 34

az result【17】= 45

az result【18】= 200605011306

az result【19】= 15.4

zerm SG =(null)

行:2列=5

刪除後,查詢結果為:

az result【0】= ID

az result【1】= SensorID

az result【2】= SiteNum

az result【3】=時間

az result【4】=傳感器參數

az result【5】= 2

az result【6】= 23

az result【7】= 45

az result【8】= 200605011306

az result【9】= 16.4

az result【10】= 3

az result【11】= 34

az result【12】= 45

az result【13】= 200605011306

az result【14】= 15.4

zerm SG =(null)

按任意鍵繼續

在這個程序中,我們首先創建壹個數據庫,然後創建壹個新表,然後插入壹些數據。

再次檢查插入的數據是否正確,然後刪除壹些數據。刪除後,我們再次檢查。

我們發現我們的刪除操作也是成功的。

這個程序簡單地調用sqlite的函數接口來管理數據庫。

包括創建數據庫、創建表格、插入數據、查詢數據、刪除數據等。

註意:在上面的第五步中。

5).將sqlite源文件中的sqlite3.def文件添加到項目的源文件中。

這是必要的。添加sqlite3.def將生成壹個*。lib導入庫文件,這對於*非常重要。dll文件。否則,妳有壹個*就不那麽方便了。dll文件,因為這樣您只能通過動態加載dll來調用dll庫中的函數。

三、如何編譯SQLite的3.4.2版本(我的原創:2007年9月29日添加)

事實上,這個版本比以前的版本更容易編譯,也更簡單。

步驟如下:

1.在網站上下載源文件並選擇“SQLite-merging-3 _ 4 _ 2 . zip”。這個文件包含兩個文件,sqlite3.h和sqlite3.c。

2.下載“sqlitedll-3_4_2.zip”。輔助文件包含編譯後的DLL文件和DEF文件,DEF文件用於在編譯時生成lib文件。(答案)

3.打開VC並創建壹個名為sqlite3的新“Win32動態鏈接庫”項目。

4.在下壹個對話框中,選擇“壹個空DLL項目”並單擊“完成”-》;好

5.復制解壓縮的*。c *。h *。def到項目文件夾。

6.將下載的sqlite源文件中的sqlite3.c文件添加到項目的源文件中。

7.將sqlite源文件中的sqlite3.def文件添加到項目的源文件中。

8.將下載的sqlite源文件中的sqlite3.h文件添加到頭文件中。

9.開始編譯和構建(F7)。