编译最新的SQLite 3.8.4.3为一个DLL

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

话说使用吧。

我们要使用,就需要调用它,现在一步一步来。

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


下载图上标注的代码

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

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


下载下来之后解开这个ZIP,里面有个DEF文件,复制到工程目录中去,然后再在VS2010中添加上,现在有导出函数了,但是编译不能通过,我们需要定义两个宏,他们是:

SQLITE_ENABLE_COLUMN_METADATA

SQLITE_ENABLE_RTREE

把这两个宏添加到工程中去,如下图:


现在编译,就可以通过了

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

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

第四步:优化处理和调用

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

第五步:成果展示:


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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

互联网速递520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值