函数'sqlite3_key'的隐式声明?

Tar*_*riq 7 sqlite iphone encryption cryptography

我正在研究SQLite文件加密.我在我的项目中成功添加了sqlCipher和crypto框架.

现在,当我尝试在这一行编译我的应用程序时

int rc = sqlite3_key(database, [key UTF8String], strlen([key UTF8String]));
Run Code Online (Sandbox Code Playgroud)

它说函数'sqlite3_key'的隐式声明

所以上面的行"隐式声明"对我来说听起来像函数已定义但未声明.但我必须在哪里宣布?

在通过Internet进行搜索时,在本文中,它表示像SQLite加密扩展(SEE)一样不公开.我必须以2000美元左右的价格购买它.

参见 - > http://www.hwaci.com/sw/sqlite/see.html

所以这是我在sqlite加密过程中获得隐式声明和错误响应的唯一原因?

adi*_*man 21

如果您使用的是SQLCipher,则需要在应用程序的C标志中定义SQLITE_HAS_CODEC.就这样.


Tom*_*ton 6

是的,这就是你得到编译器警告的原因.函数sqlite3_key()未在iOS附带的libsqlite3版本中定义.添加函数声明不会有帮助 - 它会修复编译器警告,但这只是意味着你会得到链接器错误,因为函数没有在任何地方定义.

如果您购买了SEE,您可以构建自己的SQLite副本,将其嵌入到您的应用程序中,而不是使用系统的libsqlite3.这意味着当应用商店提交过程询问您的应用是否包含加密时,您必须说"是",这意味着在您提交应用之前需要额外的文书工作和时间.我不确定是否有任何明确迹象表明苹果是否会接受它 - 可能他们会这样做,但他们已经知道让人们大吃一惊.