SQLite第三课 源码编译错误以及解决

1)fts2 has a designflaw and has been deprecated

2)fts1 has a designflaw and has been deprecated

解决方案:

解析:FTS1和FTS2都有设计的缺陷,现在已经被废弃,目前已经提供了FTS3或者FTS4,这些作为全文搜索的模块,弥补了以前的FTS1的不足。如果确定不会使用到全文搜索,可以直接使用SQLITE_CORE,禁用。将SQLITE_CORE添加到编译选项。

VS 的基本设置:属性》》C/C++》》预处理器》》预处理定义

3)Cannot open includefile: ‘unicode/utypes.h‘: No such file or directory

该问题主要是调用了FTS1或者FTS2引起的,通过禁用FTS1和FTS2顺利编译通过。

FTS1有一个设计的缺陷,会导致数据库错误(databasecorruption).强烈推荐废弃该模块,改用fts3或者更高的模块。如果你相信fts1的使用是安全的,可以通过添加DSQLITE_ENABLE_BROKEN_FTS1=1到编译选项。

FTS1模块将会作为一个扩展模块而被编译(当SQLITE_CORE没有被定义的情况下)。

另外如果SQLITE_ENABLE_FTS1被定义,FTS1也会被编译进SQLite内核。

4)Error: no module:rtree

默认情况下sqlite3.exe的控制台程序是没有携带Rtree模块的,如果需要启用该模块,需要调用预编译定义:SQLITE_ENABLE_RTREE,然后通过shell.c文件的main重新生成程序。

5)控制台程序

建立空的控制台,然后导入sqlite源码,编译出现如下的错误:

error LNK2019: 无法解析的外部符号[email protected],该符号在函数 ___tmainCR...

第一步:在C++/预编译中,添加:SQLITE_ENABLE_RTREE 参数支持rtree

第二步:如果是控制台程序:

1.菜单中选择Project->Properties, 弹出Property Pages窗口

2.在左边栏中依次选择:ConfigurationProperties->C/C++->Preprocessor,然后在右边栏的PreprocessorDefinitions对应的项中删除_WINDOWS, 添加_CONSOLE.

3.在左边栏中依次选择:ConfigurationProperties->Linker->System,然后在右边栏的SubSystem对应的项改为CONSOLE(/SUBSYSTEM:CONSOLE)

6)unexpected end offile while looking for precompiled header. Did you forget to add ‘#include"stdafx.h"‘ to your source?

sqlite源码不能够调用预编译处理,因为sqlite的源码是纯C语言,无法获得VC++预编译的好处。

解决:属性》》C/C++》》预编译头》》创建、使用预编译头(不使用预编译头)

时间: 2025-01-31 09:51:37

SQLite第三课 源码编译错误以及解决的相关文章

Unix网络编程第三版源码编译

配置: $ cd Unix-Network-Programming/ $ chmod 755 configure $ ./configure 主要的工作是检查系统是否有源码编译所依赖的各种资源(系统版本是否匹配.编译器.库文件.头文件以及结构体定义等等) checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking for

Cocos2dx 3.6源码编译错误:syntax error : missing ')' before '{'

在编译Cocos2dx 3.6版本时,发现编译错误: 定位代码行: debugForNormalSprite->drawPoints(positions, 4, 8, Color4F{0.0,1.0,1.0,1.0}); 修改如下: debugForNormalSprite->drawPoints(positions, 4, 8, Color4F<span style="color:#ff0000;">(</span>0.0,1.0,1.0,1.0&

解决 Ubutnu16.04 + opencv4.1 源码编译错误 Makefile:160: recipe for target &#39;all&#39; failed

最近源码编译 opencv,出现下面的错误 [ 60%] Built target opencv_dnn Makefile:160: recipe for target 'all' failed make: *** [all] Error 2 google 一下,才知道原来是安装了 Anaconda 后,python 和 gcc 都用的是 anaconda 的版本,anaconda 的 gcc 版本,比 system defalut 的版本低 参考:https://stackoverflow.c

排查源码编译错误的一些技巧

make使用技巧 源码编译时有错误出现在 Linux 下是很正常的事,关键是要懂得查看错误信息.一般 Linux 下的错误主要是由路径.权限.链接库造成的,可以针对这些内容进行筛选,找出出错的原因并加以解决. 对于编译一些时间长,输出多的库或程序,可以使用 make 2>&1 | tee build.log 来在文件和控制台同时输出 标准输出.标准错误输出 然后在log日志文件中直接搜索/error /ERROR /ABORT 查看错误信息 ask make 2>&1 | te

编译android源码遇到错误及其解决方法

升级ubuntu的14.04后,android的源码又编译错误了,一下是错误说明赫解决方法: 1.make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] 断开的管道 解决方法: sudo apt-get install bison sudo apt-get install flex 2. sh: 1: gperf: not foundcalling gperf failed: 32

c++ primer plus 第六版程序清单16.8 vect2.cpp 手打源码编译错误!!!

坚持手打源码,编译运行,但未每个程序均进行单步调试,昨天在VS2017上手打c++ primer plus 第六版程序清单16.8 vect2.cpp后编译出错: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Thrift第一课 源码编译

1)字符编码 Thrift采用多字节的编码方式,在使用log4cplus进行日志管理的时候,同样需要编译一个多字节的字符编码的版本,否则就会出现log4cplus中无法解析的函数符号 2)Boost链接动态库 libthrift 要求boost库的智能指针,线程库以及librt 注意:bool interruptible_wait(detail::win32::handle handle_to_wait_for,detail::timeout target_time)怀疑是boost版本之间的问

源码编译安装httpd-2.4.39

环境centos7.6 需要下载的源码编译安装包: 官网http://www.apache.org/index.html#projects-list httpd-2.4.39.tar.bz2(最小化安装系统需安装bzip2) apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz 基于最小化安装的centos系统,生产实践,源码编译需要安装下面组件 yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel opens

【Linux探索之旅】第四部分第五课:源码编译,安装便利

内容简介 1.第四部分第五课:源码编译,安装便利 2.第四部分第六课:DNS和域名,一探究竟 源码编译,安装便利 这一课相对轻松,毕竟刚跨年(2015-2016)么,新年怎么能让大家一个头两个大呢~ 小编怎么可能这么坏呢?小编是这样的人吗?(是啊 -_-#). 之前的课程([Linux探索之旅]第二部分第七课:软件安装,如虎添翼)中,我们已经了解过Ubuntu这个Linux的发行版下安装软件是何等方便,用apt-get这个工具可以轻松搞定.这种方式可以让我们下载并安装大部分的软件. 其他Linu