我想编译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
该目录中包含以下文件:
if file_count_indst < file_limit:
count=0;
for mfile in move_list:
shutil.move(src_filepath + '\\' + mfile, dst_filepath)
count = count +1
if count==1000:
break
以下输出:
cl -DSQLITE_USER_AUTHENTICATION shell.c sqlite3.c userauth.c -Fesqlite3.exe
如果c中有C#的db.SetPassword(“ MyPW”)可用,那将是完美的!
答案 0 :(得分:2)
我按照[...] 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
指令就足够了,因为来自该标头的所有必需的声明(主要来源之一)应该已经包含在合并中。