编译最新的SQLite 3.8.4.3为一个DLL
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的更多相关文章
- 让PDF.NET支持最新的SQLite数据库
最近项目中用到了SQLite,之前项目中用的是PDF.NET+MySQL的组合,已经写了不少代码,如果能把写好的代码直接用在SQLite上就好了,PDF.NET支持大部分主流的数据库,这个当然可以,只 ...
- PDF.NET支持最新的SQLite数据库
最近项目中用到了SQLite,之前项目中用的是PDF.NET+MySQL的组合,已经写了不少代码,如果能把写好的代码直接用在SQLite上就好了,PDF.NET支持大部分主流的数据库,这个当然可以,只 ...
- 编译最新ffmpeg2.0.1到iOS设备
www.mingjianhua.com 转载请注明出处. 上一篇文章讲了用NDKr9编译最新ffmpeg2.0.1到android平台,一般做了Android平台的编解码就免不了要做iOS,这次一起把 ...
- (转)windows下编译最新的x264
二:<windows下编译最新的x264> X264更新的比较快,每天都有更新,但算法模块,基本结构是没有多大变化的.x264都是用C语言写的包括C99,但C99语法是在VC中是没法用的( ...
- apk 反编译 - 最新版图文教程
apk 反编译 - 最新版图文教程 结合网上众多教程,整理一篇自己操作的,工具都是目前最新版 apk 反编译也就是将打包后的 apk 反编译为资源文件(图片).layout.样式.相关的实现代码等.( ...
- 获取并编译最新的Notepad++源码
获取并编译最新的Notepad++源码 http://blog.csdn.net/u012814856/article/details/68947310 Notepad++源码编译及其分析 http: ...
- QSqlDatabase::addDatabase第一次运行的时候,生成SQLite文件的同时会产生一个默认连接
QSqlDatabase::addDatabase第一次运行的时候,生成SQLite文件的同时会产生一个默认连接: QSqlDatabase database = QSqlDatabase::addD ...
- SqlSugar解决SQLite访问的问题:Unable to load DLL 'SQLite.Interop.dll'
SqlSugar用的版本是4.5.9.5,访问SQLite数据提示错误.在本机调试一时没有什么错误,把代码发布到服务器上以后刚开始运行没有问题,一段时间后报错. English Message : C ...
- 在Windows上编译最新的CURL,含有zlib,openssl
最近,从网上下载了一个curl库,使用时各种报错,都无法启动,于是干脆就直接自己编译了. 1. 准备工作 a. 下载zlib zlib可以使得HTTP请求支持gzip压缩,其地址如下: 官网:http ...
随机推荐
- linux下安装mysql(ubuntu0.16.04.1)
安装步骤: sudo netstat -tap | grep mysql 查看是否已安装 安装mysql:sudo apt-get install mysql-server mysql-client ...
- Sqoop安装与应用过程
1. 参考说明 参考文档: http://sqoop.apache.org/ http://sqoop.apache.org/docs/1.99.7/admin/Installation.html ...
- jQuery星级评论表单美化代码
最近正在做php第二阶段的项目,由于我们小组做的是游戏评论网站,所以需要用到评分评论的页面,这里我做了个星级评论表单 1.首先,我们需要引入一个jQuery文件,代码如下: /*! * jQuery ...
- paste 命令
Linux paste命令用于合并文件的列. paste指令会把每个文件以列对列的方式,一列列地加以合并. 语法: paste [-s][-d <间隔字符>][--help][--vers ...
- Linux CentOS下Python+robot framework环境搭建
Linux CentOS下Python+robot framework环境搭建 by:授客 QQ:1033553122 操作系统环境:CentOS 6.5-x86_64 下载地址:http://w ...
- Flutter应用打包发布
本文学习Flutter打包,打包环境,Android studio3.2,打包的程序就使用上文的酷炫天气预报 terminal执行下列命令: 1.生成key(如果有现成的Key跳过这一步) 2.ke ...
- Flutter之搜索电影
搜索使用的是豆瓣电影API https://developers.douban.com/wiki/?title=movie_v2#subject 效果 代码: https://github.com/z ...
- 常用的第三方模块 Pillow url
Pillow PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,但API却非常简单易用. 由于PIL仅支持到Python 2.7 ...
- 6.1 函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数
函数的返回值: 函数一旦执行到 return,函数就会结束,并会返回return 后面的值,如果不使用显式使用return返回,会默认返回None . return None可以简写为 r ...
- apache web服务器安全配置
尽管现在购买的云服务器很多都有一键web环境安装包,但是如果是自己配置web环境则需要对各种安全配置十分了解,今天我们就来尝试这做好web服务器安全配置.这里的配置不尽完善,若有纰漏之处还望指出. 修 ...