|
轉(zhuǎn)自:http://blog.csdn.net/hyxiaohaiyang/article/details/7382551 知識補充: sqlite3.dll動態(tài)鏈接庫,它允許程序共享執(zhí)行特殊任務(wù)所必需的代碼和其他資源。 動態(tài)的sqlite3.lib相當(dāng)于一個h文件,是對實現(xiàn)部分(.dll文件)的導(dǎo)出部分的聲明。編譯后只是將導(dǎo)出聲明部分編譯到宿主程序中,其生成的sqlite3.exe在運行時需要相應(yīng)的dll文件支持 。 靜態(tài)的sqlite3.lib將導(dǎo)出聲明和實現(xiàn)都放在lib中。編譯后所有代碼都嵌入到宿主程序,其生成的sqlite3.exe可直接運行。
任務(wù): 一.使用VS2010編譯sqlite3,生成動態(tài)的sqlite3.lib和sqlite3.dll(sqlite3.dll在官網(wǎng)中也可下載到)。在VS2010中編寫簡單程序,使用動態(tài)的sqlite3.lib和sqlite3.dll。 二.使用VS2010編譯sqlite3,生成靜態(tài)的sqlite3.lib。在VS2010中編寫簡單程序,使用靜態(tài)的sqlite3.lib。
任務(wù)一: 1.在sqlite官網(wǎng) http://www./download.html 上下載sqlite-amalgamation-3071000.zip 和sqlite-dll-win32-x86-3071000.zip(我用的此版本)。 2.分別解壓上述兩個文件到各自文件夾下(sqlite3.def、sqlite3.dll在同一文件夾sqlite-dll下)。 3.從VS2010的安裝目錄下Microsoft Visual Studio 10.0\VC\bin找到lib.exe和link.exe,從VS2010的安裝目錄下G:\Microsoft Visual Studio 10.0\Common7\IDE找到mspdb100.dll。將lib.exe link.exe mspdb100.dll放到步驟2中的sqlite-dll文件夾下。 4.打開cmd窗口,轉(zhuǎn)到上述sqlite-dll文件夾下,我的是E:\SoftwareDesign\SQLite\sqlite-dll
5.輸入命令:LIB /DEF:sqlite3.def /machine:IX86。這時,在sqlite-dll文件夾下會出現(xiàn)sqlite3.lib。(這是動態(tài)的sqlite3.lib文件,只有47KB大小。) 6.在VS2010中編寫簡單程序。文件->新建->項目->Win32控制臺應(yīng)用程序,命名為test1 。 7.將test1.cpp中的內(nèi)容替換為以下代碼:
8.將sqlite3.h、sqlite3.lib、sqlite3.dll復(fù)制到工程所在文件目錄中。我的是E:\SoftwareDesign\SQLite\VisualStudio2010Workspace\Projects\test1\test1,如下圖所示:
9.在VS2010中,右鍵test1工程,添加->現(xiàn)有項,在出現(xiàn)的對話框中選擇上一步中的sqlite3.lib。(必須將lib文件再添加到工程中) 10.按F5鍵,運行成功。 PS:這時,到工程所在文件目錄下找到test1.exe(大小為29KB),我的是在E:\SoftwareDesign\SQLite\VisualStudio2010Workspace\Projects\test1\Debug。如果直接雙擊運行的話,會提示因缺少sqlite3.dll文件而無法運行。這是因為動態(tài)的sqlite3.lib只是將聲明部分編譯到test1.exe中,運行時需要dll文件的支持。將sqlite3.dll文件復(fù)制到test1.exe同一目錄下,再雙擊運行test1.exe,就會運行成功。
任務(wù)二: 1.在VS2010中,文件->新建->項目->Win32項目,命名為sqlite3(其他名稱也行)。在向?qū)гO(shè)置中,選擇DLL(D)、空項目。 2.將下載的sqlite-amalgamation-3071000.zip 中的“sqlite3.h”、“sqlite3.c”、“sqlite3ext.h”三個文件添加到工程中,具體做法:右鍵sqlite3工程->添加->現(xiàn)有項,在出現(xiàn)的對話框中選擇上述三個文件。 3.(release版本比debug版本體積小,運行速度快,所以操作中我發(fā)布的是release版本)如下圖所示
4.按F7鍵編譯(或右鍵->生成)。在工程所在文件目錄中會編譯出sqlite3.dll文件。(PS:網(wǎng)上有的講解需要配置很多的參數(shù)等等,試了很多次都不成功,然而按照上述無需多余操作即可成功??赡苁荲S或sqlite版本不同的原因) 5.編譯的同時會在工程所在目錄中產(chǎn)生sqlite3.obj文件,我的是在E:\SoftwareDesign\SQLite\VisualStudio2010Workspace\Projects\sqlite3\sqlite3\Release下。接下來要用到VS安裝目錄下的lib.exe文件。將sqlite3.obj文件復(fù)制到lib.exe所在目錄下,我的是G:\Microsoft Visual Studio 10.0\VC\bin。將G:\Microsoft Visual Studio 10.0\Common7\IDE下的mspdb100.dll,mspdbcore.dll,mspdbsrv.exe,msobj100.dll復(fù)制到lib.exe所在目錄下。 6.打開cmd窗口,轉(zhuǎn)到lib.exe所在文件夾下,我的是G:\Microsoft Visual Studio 10.0\VC\bin。輸入命令:lib sqlite3.obj。這時會生成靜態(tài)的sqlite3.lib(大小為2.32MB)。
7.在VS2010中編寫簡單程序。文件->新建->項目->Win32控制臺應(yīng)用程序,命名為test2 。 8.test2.cpp中的代碼替換為上述的代碼。(任務(wù)一步驟7中的代碼) 9.將sqlite3.h和步驟6中生成的靜態(tài)sqlite3.lib復(fù)制到test2工程所在的文件目錄中,我的是E:\SoftwareDesign\SQLite\VisualStudio2010Workspace\Projects\test2\test2。 10.在VS2010中,右鍵test2工程->添加->現(xiàn)有項。選擇sqlite3.lib。 11.按F5鍵,運行成功。 PS:這時,在E:\SoftwareDesign\SQLite\VisualStudio2010Workspace\Projects\test2\Debug下會生成test2.exe(大小為501KB)。雙擊可以直接運行。此時不需dll文件支持。因為靜態(tài)的sqlite3.lib將導(dǎo)出聲明和實現(xiàn)都放在lib中,編譯后所有代碼都嵌入到test2.exe,可直接運行。 |
|
|