编译最新的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" >

下载图上标注的代码

第二步:准备编译。下载下来之后是个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一样啊)。

时间: 2024-08-26 11:12:53

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

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

最近项目中用到了SQLite,之前项目中用的是PDF.NET+MySQL的组合,已经写了不少代码,如果能把写好的代码直接用在SQLite上就好了,PDF.NET支持大部分主流的数据库,这个当然可以,只是我发现,目前发布的编译好的PDF.NET的库并不支持最新的SQLite,直接替换输出路径下的DLL是不起作用的,于是,把PDF.NET的源代码下载下来,替换成最新的System.Data.SQLite.dll,然后重新编译了,步骤如下: 1.下载预编译好的System.Data.SQLite.dl

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

最近项目中用到了SQLite,之前项目中用的是PDF.NET+MySQL的组合,已经写了不少代码,如果能把写好的代码直接用在SQLite上就好了,PDF.NET支持大部分主流的数据库,这个当然可以,只是我发现,目前发布的编译好的PDF.NET的库并不支持最新的SQLite,直接替换输出路径下的DLL是不起作用的,于是,把PDF.NET的源代码下载下来,替换成最新的System.Data.SQLite.dll,然后重新编译了,步骤如下: 1.下载预编译好的System.Data.SQLite.dl

Windows下编译最新的x264

X264更新的比较快,每天都有更新,但算法模块,基本结构是没有多大变化的.x264都是用C语言写的包括C99,但C99语法是在VC中是没法用的(当然有精力可以全部改成C89),生成的.a库是也是没法调用的,如何转化成可用.lib库就比较重要了. 1 下载mingw+msys进行配置,这里有已配置好的,直接下载用就可以了 http://code.google.com/p/msys-cn/wiki/ChapterInstallation 2 下载最新的x264 http://videolan.mir

(转)windows下编译最新的x264

二:<windows下编译最新的x264> X264更新的比较快,每天都有更新,但算法模块,基本结构是没有多大变化的.x264都是用C语言写的包括C99,但C99语法是在VC中是没法用的(当然有精力可以全部改成C89),生成的.a库是也是没法调用的,如何转化成可用.lib库就比较重要了. 1下载最新的x264http://videolan.mirror.aussiehq.net.au/x264/snapshots/解压到d盘 2下载mingw+msys进行配置,这里有已配置好的,直接下载用就可

WIndows下编译libexif-0.6.21,生成VS下可用的dll和lib

1.下载libexif-0.6.21.zip 下载地址是http://sourceforge.net/projects/libexif/files/libexif/0.6.21/ 2.解压libexif-0.6.21.zip 我解压到了d:\opensources\下 3.安装Mingw 下载地址是http://www.mingw.org/ 点击右上角的Download Installer 记得安装Msys 我的安装路径是:C:\MinGW 下面依次有如下文件夹: bin include lib

VS2005,VS2008,VS2010将ASP.NET网站编译成一个DLL文件

分类: C#/ASP.Net 2012-10-09 22:19 1342人阅读 评论(1) 收藏 举报 dllasp.net2010deploymentwebsiteassembly VS在发布网站时,bin目录里为所有cs生成的dll文件每次都是随机命名的,如:App_Web_xxxxxxxx.dll(xxxxxxx是 8个小写的字母和数字组成的字符串,随机的),这样对更新 Live 站点很不方便,因为动态库名变了,涉及到每一个 aspx 文件每次都重新更改了对库的引用声明:        

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

QSqlDatabase::addDatabase第一次运行的时候,生成SQLite文件的同时会产生一个默认连接: QSqlDatabase database = QSqlDatabase::addDatabase("QSQLITE"); QString myconn = m_createname = database.connectionName(); database.setDatabaseName(myfile); 然而真正查询的时候,却又使用了新的连接:m_database =

chromium浏览器开发系列第二篇:如何编译最新chromium源码

说一下为什么这么晚才发第二篇,上周和这周department的工作太多了,晚上都是十点半从公司出发,回家以后实在没有多余的精力去摸键盘了.所以请大家包涵! 上期回顾: chromium源码下载: 1.找个靠谱的vpn(我试过了,网上说的不用vpn拿代码的都不靠谱): 2.获取depot_tools,解压,设置环境变量; 3.gclient获取python和git,svn,设置环境变量: 4.fetch–nohooks chromium –nosvn=true 获取源码: 5.gclientsyn

编译最新版本的OpenCV

参考:https://github.com/opencv/opencv/wiki/Windows_7_and_TortoiseGit_contribution_guide一 下载最新代码,可以通过GIT或Http直接下载 二 cmake(注意,如果编译为静态库,需要选择 BUILd_WITH_STATIC_CRT) 两次build,一次generate,然后直接OpenCV project 三 生成 VS里面选择Install,并生成 四 使用 如果是动态库,使用方法和下载的Prebuild方法