首页 » 网站建设 » PHPSqlite法式源码技巧_新版SQLite源码下载与编译

PHPSqlite法式源码技巧_新版SQLite源码下载与编译

访客 2024-11-24 0

扫一扫用手机浏览

文章目录 [+]

因此,在最新版投影转换工具PROJ源码 ”一文中,我们又为大家分享了PROJ的源码,如果你对PROJ源码进行编译,会创造它会须要SQLite的支持。

这里,我们再为大家分享SQLite的源码下载与编译的方法,你可以通过关注微信"大众年夜众号“水经注GIS”并回答“SQLite”获取最新版本的SQLite源码与基于VS2015的编译工程文件。

PHPSqlite法式源码技巧_新版SQLite源码下载与编译

什么是SQLite?

SQLite是一个进程库,实现了一个自包含的,无做事器,零配置及事务性的SQL数据库引擎。

PHPSqlite法式源码技巧_新版SQLite源码下载与编译
(图片来自网络侵删)

SQLite的源代码是公开的,因此可以免用度于任何目的,无论是否是商业目的。

SQLite是天下上支配最广泛的数据库,其运用程序数量超出我们的想象,个中包括Adobe公司、Airbus公司、FaceBook、微软、苹果和谷歌等天下有名企业,SQLite数据库文件也是美国国会图书馆推举的存储格式。

SQLite是嵌入式SQL数据库引擎,与大多数其他SQL数据库不同,SQLite没有单独的做事器进程。

SQLite直接读取和写入普通磁盘文件,具有多个表、索引、触发器和视图的完全SQL数据库包含在单个磁盘文件中。

数据库文件格式是跨平台的,因此可以在32位和64位系统之间或在big-endian和 little-endian 体系构造之间自由复制数据库,这些功能使SQLite成为运用程序文件格式的盛行选择。

SQLite是一个紧凑的库,启用所有功能后,库大小可以小于600KB,详细取决于目标平台和编译器优化的设置。

SQLite在内存越大的情形下运行速率就越快,纵然在低内存环境下,性能常日也相称不错,乃至可能会比直接通过系统I/O读取更快。

如何下载最新版SQLite源码

最新版本的SQLite源码可以到官方网站下载,在官方网站的第一项下载链接即为源码,如下图所示。

SQLite官网

其余,还须要下载模块定义文件sqlite3.def,否则无法天生sqlite3.lib库,如下图所示。

下载预编译文件

为了便于利用,可以把源码和预编译文件的32位与64位版本都下载下来,如下图所示。

源码文件压缩包

将文件进行解压,根据实际须要,预编译文件可以选择32位或64位版本,末了将源码文件汇总到一个目录中备用,如下图所示。

源码文件

以上准备事情就绪之后,接下来就可以对源码进行编辑了。

如何基于VS2015编译SQLite源码

我们基于VS2015对SQLite源码进行编译,如果你还没有任何编译工具,请参阅“Visual Studio 2015 安装教程(附安装包)”一文支配安装编译环境。

在VS2015中新建一个名为“sqlite3”的Win32项目,如下图所示。

新建Win32项目

点击下一步连续,然后在运用程序设置中选择“DLL”和“空项目”,如下图所示。

运用程序设置

项目新建完成后,将之前准备的源码文件复制到工程目录,如下图所示。

源代码准备

通过添加现有项功能,将头文件sqlite.h和sqlite3ext.h添加到工程中,如下图所示。

导入源码头文件

其余,也须要将shell.c、sqlite3.c和sqlite3.def添加到源文件中,如下图所示。

导入源码完成

现在如果直接编译工程,则不会天生sqlite3.lib库文件,因此须要在项目属性中设置sqlite3.def模块定义文件,如下图所示。

配置模块定义文件

现在将源码进行编辑之后,会天生许多缺点提示:

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_database_name

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_database_name16

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_origin_name

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_origin_name16

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_table_name

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_table_name16

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_deserialize

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_fts3_may_be_corrupt

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_fts5_may_be_corrupt

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_preupdate_count

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_preupdate_depth

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_preupdate_hook

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_preupdate_new

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_preupdate_old

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_rtree_geometry_callback

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_rtree_query_callback

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_serialize

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changegroup_add

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changegroup_add_strm

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changegroup_delete

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changegroup_new

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changegroup_output

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changegroup_output_strm

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_apply

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_apply_strm

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_apply_v2

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_apply_v2_strm

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_concat

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_concat_strm

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_conflict

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_finalize

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_fk_conflicts

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_invert

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_invert_strm

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_new

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_next

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_old

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_op

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_pk

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_start

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_start_strm

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_start_v2

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_start_v2_strm

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3rebaser_configure

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3rebaser_create

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3rebaser_delete

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3rebaser_rebase

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3rebaser_rebase_strm

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_attach

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_changeset

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_changeset_strm

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_config

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_create

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_delete

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_diff

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_enable

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_indirect

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_isempty

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_memory_used

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_patchset

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_patchset_strm

1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_table_filter

天生缺点的缘故原由,是由于在sqlite3.def中定义的函数在源码中默认没有导出,须要在工程属性中添加以下预处理定义,如下所示。

SQLITE_CORE

SQLITE_EXPORTS

SQLITE_ENABLE_FTS3

SQLITE_ENABLE_FTS5

SQLITE_ENABLE_RTREE

SQLITE_ENABLE_COLUMN_METADATA

SQLITE_ENABLE_SESSION

SQLITE_ENABLE_PREUPDATE_HOOK

SQLITE_ENABLE_DESERIALIZE

添加宏定义

只要上述配置精确,无论是在Debug还是Release版本下都可以编译成功,如下图所示。

编译成功

编译成功后,就可以在源码工程的Debug或Release目录中找到sqlite3.dll和sqlite3.lib文件,如下图所示。

编译结果

现在,我们将下载的源码文件压缩包,编译成功的工程源码整理到了一个目录中,如下图所示。

分享资料整理

为了方便分享,我们将上述整理好的文件打包上传到了百度网盘中,请通过关注微信公众年夜众号“水经注GIS”,然后在后台回答“SQLite”可获取下载地址。

总结

SQLite代码库由一支全职从事SQLite事情的国际开拓职员团队支持,以持续扩展SQLite的功能并增强其可靠性和性能,同时保持与已发布的接口规范,以及SQL语法和数据库文件格式的向后兼容性。

末了,如果你在SQLite源码编译过程中碰着任何难题,请通过关注公众号“水经注GIS”并在后台留言见告我们,我们将竭尽所能地为你供应帮助,从而将我们“为用户供应丰富的舆图数据与专业的GIS做事”之宗旨落到实处!

标签:

相关文章

三国联机,跨越时空的智慧竞技之旅

三国,一个充满传奇色彩的历史时期,英雄辈出,战事连连。如今,在科技飞速发展的今天,我们如何让三国历史在虚拟世界中重现,让玩家们穿越...

网站建设 2025-01-01 阅读0 评论0

三国大战,一场改变历史的世纪之战

三国时期,是我国历史上一个重要的转折点。自东汉末年群雄并起,至三国鼎立,这段历史充满了战争与纷争。三国大战,作为一场改变历史的世纪...

网站建设 2025-01-01 阅读0 评论0

万能板,创新材料在建筑领域的应用与前景

随着科技的不断发展,新型建筑材料层出不穷。万能板作为一种创新材料,凭借其优异的性能和广泛的应用领域,逐渐成为建筑行业的新宠。本文将...

网站建设 2025-01-01 阅读0 评论0

七牛云存储,高效、便捷的云端服务体验

随着互联网的快速发展,数据存储和传输需求日益增长。在众多云存储服务提供商中,七牛云存储凭借其高效、便捷的特点,成为了众多企业和个人...

网站建设 2025-01-01 阅读0 评论0

七本方法,介绍如何防龙之路

自古以来,龙作为中华民族的图腾,象征着吉祥与权威。在民间传说中,龙也常常与灾难、凶险联系在一起。面对神秘莫测的龙,如何才能确保人身...

网站建设 2025-01-01 阅读0 评论0