设为首页 收藏本站
查看: 1518|回复: 0

[经验分享] win7下vs2010编译生成sqlite3.lib库

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-5-14 12:42:07 | 显示全部楼层 |阅读模式
  知识补充:
  sqlite3.dll动态链接库,它允许程序共享执行特殊任务所必需的代码和其他资源。
            动态的sqlite3.lib相当于一个h文件,是对实现部分(.dll文件)的导出部分的声明。编译后只是将导出声明部分编译到宿主程序中,其生成的sqlite3.exe在运行时需要相应的dll文件支持 。
        静态的sqlite3.lib将导出声明和实现都放在lib中。编译后所有代码都嵌入到宿主程序,其生成的sqlite3.exe可直接运行。

任务:
           一.使用VS2010编译sqlite3,生成动态的sqlite3.lib和sqlite3.dll(sqlite3.dll在官网中也可下载到)。在VS2010中编写简单程序,使用动态的sqlite3.lib和sqlite3.dll。
           二.使用VS2010编译sqlite3,生成静态的sqlite3.lib。在VS2010中编写简单程序,使用静态的sqlite3.lib。

任务一:
1.在sqlite官网 http://www.sqlite.org/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窗口,转到上述sqlite-dll文件夹下,我的是E:\SoftwareDesign\SQLite\sqlite-dll
DSC0000.jpg
5.输入命令:LIB /DEF:sqlite3.def /machine:IX86。这时,在sqlite-dll文件夹下会出现sqlite3.lib。(这是动态的sqlite3.lib文件,只有47KB大小。)
6.在VS2010中编写简单程序。文件->新建->项目->Win32控制台应用程序,命名为test1 。
7.将test1.cpp中的内容替换为以下代码:


DSC0001.gif DSC0002.gif View Code


1 // test1.cpp : 定义控制台应用程序的入口点。
2 //
3 #include "stdafx.h"
4 #include
5 #include "sqlite3.h"
6 int _tmain(int argc, _TCHAR* argv[])
7 {
8     int rc;
9     int i, nrows, ncols, tr;
10     char *errmsg = NULL;
11     char **results;
12     
13     sqlite3 *db = NULL;
14     rc = sqlite3_open("demodb", &db);
15     if (rc)
16     {
17         fprintf(stderr, "can't open db!\n", sqlite3_errmsg(db));
18         sqlite3_close(db);
19         exit(1);
20     }
21     else
22     {
23         printf("db open successfully!\n");
24     }
25     sqlite3_get_table(db,"select * from clients;",&results,&nrows,&ncols,&errmsg);
26     printf("DB has %d rows and %d cols\n\n",nrows,ncols);
27     tr=(nrows+1)*ncols;
28     for(i=0;i现有项,在出现的对话框中选择上一步中的sqlite3.lib。(必须将lib文件再添加到工程中)
10.按F5键,运行成功。
PS:这时,到工程所在文件目录下找到test1.exe(大小为29KB),我的是在E:\SoftwareDesign\SQLite\VisualStudio2010Workspace\Projects\test1\Debug。如果直接双击运行的话,会提示因缺少sqlite3.dll文件而无法运行。这是因为动态的sqlite3.lib只是将声明部分编译到test1.exe中,运行时需要dll文件的支持。将sqlite3.dll文件复制到test1.exe同一目录下,再双击运行test1.exe,就会运行成功。
  
  任务二:
1.在VS2010中,文件->新建->项目->Win32项目,命名为sqlite3(其他名称也行)。在向导设置中,选择DLL(D)、空项目。
2.将下载的sqlite-amalgamation-3071000.zip 中的“sqlite3.h”、“sqlite3.c”、“sqlite3ext.h”三个文件添加到工程中,具体做法:右键sqlite3工程->添加->现有项,在出现的对话框中选择上述三个文件。
3.(release版本比debug版本体积小,运行速度快,所以操作中我发布的是release版本)如下图所示:
DSC0003.jpg
  
4.按F7键编译(或右键->生成)。在工程所在文件目录中会编译出sqlite3.dll文件。(PS:网上有的讲解需要配置很多的参数等等,试了很多次都不成功,然而按照上述无需多余操作即可成功。可能是VS或sqlite版本不同的原因)
5.编译的同时会在工程所在目录中产生sqlite3.obj文件,我的是在E:\SoftwareDesign\SQLite\VisualStudio2010Workspace\Projects\sqlite3\sqlite3\Release下。接下来要用到VS安装目录下的lib.exe文件。将sqlite3.obj文件复制到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复制到lib.exe所在目录下。
6.打开cmd窗口,转到lib.exe所在文件夹下,我的是G:\Microsoft Visual Studio 10.0\VC\bin。输入命令:lib sqlite3.obj。这时会生成静态的sqlite3.lib(大小为2.32MB)。
DSC0004.jpg
  
7.在VS2010中编写简单程序。文件->新建->项目->Win32控制台应用程序,命名为test2 。
8.test2.cpp中的代码替换为上述的代码。(任务一步骤7中的代码)
9.将sqlite3.h和步骤6中生成的静态sqlite3.lib复制到test2工程所在的文件目录中,我的是E:\SoftwareDesign\SQLite\VisualStudio2010Workspace\Projects\test2\test2。
10.在VS2010中,右键test2工程->添加->现有项。选择sqlite3.lib。
11.按F5键,运行成功。
PS:这时,在E:\SoftwareDesign\SQLite\VisualStudio2010Workspace\Projects\test2\Debug下会生成test2.exe(大小为501KB)。双击可以直接运行。此时不需dll文件支持。因为静态的sqlite3.lib将导出声明和实现都放在lib中,编译后所有代码都嵌入到test2.exe,可直接运行。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-66937-1-1.html 上篇帖子: SQLite 3.8.9 发布,数据库服务器 下篇帖子: SQLite.NET在Win7(64位)下使用的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表