SQLite是一个小型数据库。特别适合于client应用程序使用,它的众多优点就不多说了。有兴趣的去搜索。

话说使用吧。

我们要使用。就须要调用它。如今一步一步来。

第一步:上SQLite官网http://www.sqlite.org/下载它的源代码,它的源代码有两种格式,一种是很多文件都放在一起的,我称之为集成代码包,还有一个是非常多.c和.h文件,是分开的。我称之为松散代码包。松散代码包对编译的要求比較高,我也没那时间再去研究它的源代码,于是又变懒了,使用集成代码包吧。例如以下图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2Nwd19jbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

下载图上标注的代码

第二步:准备编译。下载下来之后是个ZIP,解开。里面有shell.c、sqlite3.c、sqlite3.h和sqlite3ext.h这么几个文件,当中shell.c我们不须要,其它的都是要用的

第三步:開始编译,以VS2010为例,打开VS2010。创建一个Win32的DLL空project,然后把sqlite3.c、sqlite3.h和sqlite3ext.h这三个文件加入到project中去,要编译出一个DLL。如今它已经能编译出来了,问题是编译出来之后没有导出函数,是不能用的,所以须要一个DEF文件(符号定义文件),这个文件按理来说我们能够自己加入,只是你假设不阅读源码是加入不了了,我们简单一点。使用官方提供的,这个要另外下载,当然,还是刚才的下载位置,找到SQLite官方为我们提供好的DLL的下载链接。进行下载,例如以下图:

下载下来之后解开这个ZIP。里面有个DEF文件,拷贝到project文件夹中去。然后再在VS2010中加入上,如今有导出函数了,可是编译不能通过,我们须要定义两个宏,他们是:

SQLITE_ENABLE_COLUMN_METADATA

SQLITE_ENABLE_RTREE

把这两个宏加入到project中去,例如以下图:

如今编译,就能够通过了

问题一:你编译Debug版本号和Release版本号的时候这两个宏要分别进行加入,否则是不行的。

问题二:编译Release版本号的时候记得设置成静态编译,否则在没有VC库的机器上不能正常调用这个DLL。

第四步:优化处理和调用

如今,你已经有一个SQLite的DLL了,为了个性化,或者其它要求,你能够加入一个Version资源。然后写上一些个性化的信息。到此为止,你的SQLite的DLL已经编译出来了。我在VS2010下,编译出来的仅仅有601KB。比官方提供的630KB小不少(DLL是越小越好啊),甚至你还能够给它来个数字签名彰显版权(官方不会限制你这么做)。

第五步:成果展示:

最后的问题:在网上看到非常多人想解决这个DLL接口上的char和wchar_t的问题,我也查了一些资料,看了下,官方里出来的这些接口看着是char。事实上是utf-8,也就是说什么字符都能处理,可是这是针对国外英文系的国家,国内用户在将字符串写入数据库之前,要进行转换。读出来之后要再次进行转换。否则是乱码(貌似和解析XML一样啊)。

编译最新的SQLite 3.8.4.3为一个DLL的更多相关文章

  1. 让PDF.NET支持最新的SQLite数据库

    最近项目中用到了SQLite,之前项目中用的是PDF.NET+MySQL的组合,已经写了不少代码,如果能把写好的代码直接用在SQLite上就好了,PDF.NET支持大部分主流的数据库,这个当然可以,只 ...

  2. PDF.NET支持最新的SQLite数据库

    最近项目中用到了SQLite,之前项目中用的是PDF.NET+MySQL的组合,已经写了不少代码,如果能把写好的代码直接用在SQLite上就好了,PDF.NET支持大部分主流的数据库,这个当然可以,只 ...

  3. 编译最新ffmpeg2.0.1到iOS设备

    www.mingjianhua.com 转载请注明出处. 上一篇文章讲了用NDKr9编译最新ffmpeg2.0.1到android平台,一般做了Android平台的编解码就免不了要做iOS,这次一起把 ...

  4. (转)windows下编译最新的x264

    二:<windows下编译最新的x264> X264更新的比较快,每天都有更新,但算法模块,基本结构是没有多大变化的.x264都是用C语言写的包括C99,但C99语法是在VC中是没法用的( ...

  5. apk 反编译 - 最新版图文教程

    apk 反编译 - 最新版图文教程 结合网上众多教程,整理一篇自己操作的,工具都是目前最新版 apk 反编译也就是将打包后的 apk 反编译为资源文件(图片).layout.样式.相关的实现代码等.( ...

  6. 获取并编译最新的Notepad++源码

    获取并编译最新的Notepad++源码 http://blog.csdn.net/u012814856/article/details/68947310 Notepad++源码编译及其分析 http: ...

  7. QSqlDatabase::addDatabase第一次运行的时候,生成SQLite文件的同时会产生一个默认连接

    QSqlDatabase::addDatabase第一次运行的时候,生成SQLite文件的同时会产生一个默认连接: QSqlDatabase database = QSqlDatabase::addD ...

  8. SqlSugar解决SQLite访问的问题:Unable to load DLL 'SQLite.Interop.dll'

    SqlSugar用的版本是4.5.9.5,访问SQLite数据提示错误.在本机调试一时没有什么错误,把代码发布到服务器上以后刚开始运行没有问题,一段时间后报错. English Message : C ...

  9. 在Windows上编译最新的CURL,含有zlib,openssl

    最近,从网上下载了一个curl库,使用时各种报错,都无法启动,于是干脆就直接自己编译了. 1. 准备工作 a. 下载zlib zlib可以使得HTTP请求支持gzip压缩,其地址如下: 官网:http ...

随机推荐

  1. idea中连接oracle数据库打包

    问题:在使用idea连接oracle数据时发现oracle.jdbc.OracleDriver引用这个包报错,找不到包.解决方法:在idea的terminal命令框中输入如下命令.我的jar包的位置在 ...

  2. C#版Aliyun DNS API

    阿里云解析API,是为域名开发者.注册商.域名代理商等提供的开放和便捷的解析服务接口.API依托于万网云解析服务,可以方便的管理域名和解析记录,让你的解析管理变的随心省时自由舒畅. 一.先附上Aliy ...

  3. 【three.js练习程序】旋转、缩放场景

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. WOE和IV

    woe全称是"Weight of Evidence",即证据权重,是对原始自变量的一种编码形式. 进行WOE编码前,需要先把这个变量进行分组处理(离散化) 其中,pyi是这个组中响 ...

  5. PHP检测数组中的每个值是否含有特殊字符

    本文出至:新太潮流网络博客 /** * [TestArray 检测数组是一维还是二维] * @E-mial wuliqiang_aa@163.com * @TIME 2017-04-07 * @WEB ...

  6. 如何监视 Azure 中的虚拟机

    通过收集.查看和分析诊断与日志数据,可以利用很多机会来监视 VM. 若要执行简单的 VM 监视,可以在 Azure 门户中使用 VM 的“概述”屏幕. 可以使用扩展在 VM 上配置诊断以收集更多指标数 ...

  7. java 版本压缩、解压缩zip

    import java.io.*; import java.util.*; import java.util.zip.ZipOutputStream; import java.util.zip.Zip ...

  8. kettle数据同步

    通过kettle实现两张表的数据同步,具体设计如下:

  9. IIS中“绑定”,“IP地址全部未分配”到底是个什么玩意

    最好是选择“全部未分配”,用这个选项时,服务器本机,在IE浏览器地址栏输入http://localhosts/ 或127.0.0.1 可以打开本机架设的网站的主页,也可以输入内网IP地址打开内网的网站 ...

  10. MySql详解(三)

    MySql详解(三) 导入基础表 具体的SQL文件已经放入百度网盘,连接为:http://pan.baidu.com/s/1hseoVR2,后面的MySql内容都是按照这些基础表展开的. depart ...