首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编译sqlite合并以获得用户身份验证抛出错误C2129和C1083

编译sqlite合并以获得用户身份验证抛出错误C2129和C1083
EN

Stack Overflow用户
提问于 2019-07-11 13:45:28
回答 1查看 462关注 0票数 2

我希望编译sqlite合并来创建一个通过用户身份验证由密码保护的数据库。

我遵循了本教程:https://www.sqlite.org/howtocompile.html和SQLite为user_authentication:https://www.sqlite.org/src/doc/trunk/ext/userauth/user-auth.txt编写的文档

当我试图编译它时,不需要额外的编译时选项"-DSQLITE_USER_AUTHENTICATION“,并且不添加其他文档,它就能工作。当我试图编译它时,我在sqlite.c处得到错误C2129,在userauth.c处得到错误C1083

该目录中有以下文件:

  • shell.c
  • sqlite3.c
  • sqlite3.h
  • sqlite3ext.h
  • sqlite3userauth.h
  • userauth.c
代码语言:javascript
复制
cl -DSQLITE_USER_AUTHENTICATION shell.c sqlite3.c userauth.c -Fesqlite3.exe

以下产出:

代码语言:javascript
复制
shell.c
sqlite3.c
sqlite3.c(222878): error C2129: static function 'void sqlite3CryptFunc(sqlite3_context *,int,sqlite3_value **)' declared but not defined
sqlite3.c(16263): note: see declaration of 'sqlite3CryptFunc'
userauth.c
userauth.c(26): fatal error C1083: Cannot open include file: 'sqliteInt.h': No such file or directory
Generating Code...

如果c #的db.SetPassword("MyPW")在c中是可用的,那就太完美了!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-11 14:04:04

我跟着..。SQLite为user_authentication:https://www.sqlite.org/src/doc/trunk/ext/userauth/user-auth.txt编写的文档

不,看上去不像你做的。那些医生说

通过在构建中包含ext/userauth/userauth.c源代码文件并添加-DSQLITE_USER_AUTHENTICATION编译时选项来激活用户身份验证逻辑。ext/userauth/sqlite3userauth.h头文件可用于应用程序来定义接口。 在使用SQLite合并时,只需将ext/userauth/userauth.c源文件追加到合并的末尾即可。

您正在使用合并,因此应该将userauth.c的内容附加到合并中。也就是说,将其内容复制到sqlite3.c的末尾。从目录列表和命令行来看,您似乎试图将其构建为一个单独的源文件,并在最后链接到主源文件。这不是等价的,特别是它对static函数和变量范围的影响不同,这正是您的编译器所抱怨的。

目前尚不清楚-DSQLITE_USER_AUTHENTICATION是否也应与合并一起使用。从字面上阅读SQLite文档并不意味着这一点,但我倾向于猜测,如果您想启用该特性,那么无论哪种方式,它实际上都是必需的。

有关缺少的标题的错误有点令人担忧,您可能会再次看到它。如果您这样做了,只需删除或注释相应的#include指令就足够了,因为来自该头的所有所需的声明(这是主要源之一)都应该包含在合并中。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56990702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档