日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用VS2017编译sqlite和在VS2017中配置使用sqlite的简单例子演示

發(fā)布時(shí)間:2024/9/30 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用VS2017编译sqlite和在VS2017中配置使用sqlite的简单例子演示 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)自:http://blog.csdn.net/hyxiaohaiyang/article/details/7382551

知識(shí)補(bǔ)充:

??????? sqlite3.dll動(dòng)態(tài)鏈接庫,它允許程序共享執(zhí)行特殊任務(wù)所必需的代碼和其他資源。

??????? 動(dòng)態(tài)的sqlite3.lib相當(dāng)于一個(gè)h文件,是對(duì)實(shí)現(xiàn)部分(.dll文件)的導(dǎo)出部分的聲明。編譯后只是將導(dǎo)出聲明部分編譯到宿主程序中,其生成的sqlite3.exe在運(yùn)行時(shí)需要相應(yīng)的dll文件支持 。

??????? 靜態(tài)的sqlite3.lib將導(dǎo)出聲明和實(shí)現(xiàn)都放在lib中。編譯后所有代碼都嵌入到宿主程序,其生成的sqlite3.exe可直接運(yùn)行。

?

任務(wù):

??????? 一.使用VS2017編譯sqlite3,生成動(dòng)態(tài)的sqlite3.lib和sqlite3.dll(sqlite3.dll在官網(wǎng)中也可下載到)。在VS2017中編寫簡(jiǎn)單程序,使用動(dòng)態(tài)的sqlite3.lib和sqlite3.dll。

??????? 二.使用VS2017編譯sqlite3,生成靜態(tài)的sqlite3.lib。在VS2017中編寫簡(jiǎn)單程序,使用靜態(tài)的sqlite3.lib。

?

任務(wù)一:

1.在sqlite官網(wǎng)?http://www.sqlite.org/download.html?上下載sqlite-amalgamation-3071000.zip?和sqlite-dll-win32-x86-3071000.zip(我用的此版本)。

2.分別解壓上述兩個(gè)文件到各自文件夾下(sqlite3.def、sqlite3.dll在同一文件夾sqlite-dll下)。

3.從VS2017的安裝目錄下Microsoft Visual Studio 10.0\VC\bin找到lib.exe和link.exe,從VS2017的安裝目錄下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。這時(shí),在sqlite-dll文件夾下會(huì)出現(xiàn)sqlite3.lib。(這是動(dòng)態(tài)的sqlite3.lib文件,只有47KB大小。)

6.在VS2017中編寫簡(jiǎn)單程序。文件->新建->項(xiàng)目->Win32控制臺(tái)應(yīng)用程序,命名為test1 。

7.將test1.cpp中的內(nèi)容替換為以下代碼:

[cpp]?view plaincopy

  • //?test1.cpp?:?定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。??
  • //??
  • #include?"stdafx.h"??
  • #include?<stdlib.h>??
  • #include?"sqlite3.h"??
  • int?_tmain(int?argc,?_TCHAR*?argv[])??
  • {??
  • ????int?rc;??
  • ????int?i,?nrows,?ncols,?tr;??
  • ????char?*errmsg?=?NULL;??
  • ????char?**results;??
  • ??????
  • ????sqlite3?*db?=?NULL;??
  • ????rc?=?sqlite3_open("demodb",?&db);??
  • ????if?(rc)??
  • ????{??
  • ????????fprintf(stderr,?"can't?open?db!/n",?sqlite3_errmsg(db));??
  • ????????sqlite3_close(db);??
  • ????????exit(1);??
  • ????}??
  • ????else??
  • ????{??
  • ????????printf("db?open?successfully!/n");??
  • ????}??
  • ????sqlite3_get_table(db,"select?*?from?clients;",&results,&nrows,&ncols,&errmsg);??
  • ????printf("DB?has?%d?rows?and?%d?cols/n/n",nrows,ncols);??
  • ????tr=(nrows+1)*ncols;??
  • ????for(i=0;i<tr;++i)?//輸出查詢結(jié)果??
  • ????{??
  • ????????printf("results[%d]=?%s/n",i,results[i]);?//此處可以自己定義輸出格式,??
  • ????}??
  • ????sqlite3_free_table(results);?//free???
  • ????sqlite3_close(db);??
  • ????int?a;??
  • ????scanf("%d",&a);//沒有此行代碼,運(yùn)行窗口出現(xiàn)后會(huì)馬山消失。??
  • ????return?0;??
  • }??
  • 8.將sqlite3.h、sqlite3.lib、sqlite3.dll復(fù)制到工程所在文件目錄中。我的是E:\SoftwareDesign\SQLite\VisualStudio2010Workspace\Projects\test1\test1,如下圖所示:

    9.在VS2017中,右鍵test1工程,添加->現(xiàn)有項(xiàng),在出現(xiàn)的對(duì)話框中選擇上一步中的sqlite3.lib。(必須將lib文件再添加到工程中)

    10.按F5鍵,運(yùn)行成功。

    PS:這時(shí),到工程所在文件目錄下找到test1.exe(大小為29KB),我的是在E:\SoftwareDesign\SQLite\VisualStudio2010Workspace\Projects\test1\Debug。如果直接雙擊運(yùn)行的話,會(huì)提示因缺少sqlite3.dll文件而無法運(yùn)行。這是因?yàn)閯?dòng)態(tài)的sqlite3.lib只是將聲明部分編譯到test1.exe中,運(yùn)行時(shí)需要dll文件的支持。將sqlite3.dll文件復(fù)制到test1.exe同一目錄下,再雙擊運(yùn)行test1.exe,就會(huì)運(yùn)行成功。

    ?

    任務(wù)二:

    1.在VS2017中,文件->新建->項(xiàng)目->Win32項(xiàng)目,命名為sqlite3(其他名稱也行)。在向?qū)гO(shè)置中,選擇DLL(D)、空項(xiàng)目。

    2.將下載的sqlite-amalgamation-3071000.zip?中的“sqlite3.h”、“sqlite3.c”、“sqlite3ext.h”三個(gè)文件添加到工程中,具體做法:右鍵sqlite3工程->添加->現(xiàn)有項(xiàng),在出現(xiàn)的對(duì)話框中選擇上述三個(gè)文件。

    3.(release版本比debug版本體積小,運(yùn)行速度快,所以操作中我發(fā)布的是release版本)如下圖所示

    4.按F7鍵編譯(或右鍵->生成)。在工程所在文件目錄中會(huì)編譯出sqlite3.dll文件。(PS:網(wǎng)上有的講解需要配置很多的參數(shù)等等,試了很多次都不成功,然而按照上述無需多余操作即可成功。可能是VS或sqlite版本不同的原因)

    5.編譯的同時(shí)會(huì)在工程所在目錄中產(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。這時(shí)會(huì)生成靜態(tài)的sqlite3.lib(大小為2.32MB)。

    7.在VS2017中編寫簡(jiǎn)單程序。文件->新建->項(xiàng)目->Win32控制臺(tái)應(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.在VS2017中,右鍵test2工程->添加->現(xiàn)有項(xiàng)。選擇sqlite3.lib。

    11.按F5鍵,運(yùn)行成功。

    PS:這時(shí),在E:\SoftwareDesign\SQLite\VisualStudio2010Workspace\Projects\test2\Debug下會(huì)生成test2.exe(大小為501KB)。雙擊可以直接運(yùn)行。此時(shí)不需dll文件支持。因?yàn)殪o態(tài)的sqlite3.lib將導(dǎo)出聲明和實(shí)現(xiàn)都放在lib中,編譯后所有代碼都嵌入到test2.exe,可直接運(yùn)行。

    總結(jié)

    以上是生活随笔為你收集整理的使用VS2017编译sqlite和在VS2017中配置使用sqlite的简单例子演示的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。