微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLite 3.7.13的加密解密五―― 修正编译错误和警告

上面的代码是从网上下载下来的,它使用的sqlite版本比较旧,因此在sqlite 3.7.13下编译不通过,下面需要对编译错误和警告逐一修正。

编译信息

原因与修改方法

'Pager' has no member named 'pCodecArg'

3.7.13版本中,Pager的成员变量pCodecArg名称修改pCodec,因此用到pCodecArg变量的地方修改为使用pCodec

too few arguments to function 'sqlite3PagerPagecount'

原来sqlite3PagerPagecount()函数用返回值得到页数量3.7.13改为用指针参数得到页数量

修改代码

Pgno nPage = sqlite3PagerPagecount(p);

修改如下:

int nPage;

sqlite3PagerPagecount(p,&nPage);

too few arguments to function 'sqlite3BtreeRollback'

3.7.13版中sqlite3BtreeRollback()函数增加了个参数,是表示之前sql语句执行结果的,在网上查了一下,这里直接传常量sqlITE_OK

implicit declaration of function 'sqliteFree'

sqliteFree()函数3.7.13版本中已经没有了,修改为使用sqlite3_free()函数

implicit declaration of function 'sqliteMalloc'

原因同上,修改为使用sqlite3_malloc()函数

implicit declaration of function 'DATA_TO_PGHDR'

版本中,宏DATA_TO_PGHDR已经被去掉,这里暂时把该if语句下的代码全部注释。

warning: passing argument 2 of 'sqlite3pager_set_codec' from incompatible pointer type

sqlite3pager_set_coedc()函数的第二个参数类型为:void *(*xCodec)(void*,void*,Pgno,int)

调用的地方传递的参数类型为:void * sqlite3Codec(void *pArg,unsigned char *data,Pgno nPageNum,int nMode)

很明显,第二个参数类型不匹配,修改sqlite3Codec()函数的第二个参数类型为void *,注意相应的函数声明的地方也要修改

warning: passing argument 3 of 'sqlite3PagerAcquire' from incompatible pointer type

这里第三个参数类型为void *,实际要求的数据类型为DbPage *,将对应变量类型定义为DbPage *即可。

warning: variable 'bRc' set but not used

这个警告不影响使用,不用改。

warning: 'sqlite3PagerSetCodec' defined but not used

同上

原文地址:https://www.jb51.cc/sqlite/201905.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐