问题描述
|
我正在研究SQLite文件加密。我已经在项目中成功添加了sqlCipher和crypto框架。
现在,当我尝试在此行上编译我的应用程序时
int rc = sqlite3_key(database,[key UTF8String],strlen([key UTF8String]));
它说函数'sqlite3_key \'的隐式声明
因此,上面的“隐式声明”行对我来说就像定义了函数但未声明函数。但是我必须在哪里声明?
在Internet上进行搜索时,根据本文,它表示SQLite加密扩展(SEE)不可公开使用。我必须购买它的成本约$ 2000。
查看-> http://www.hwaci.com/sw/sqlite/see.html
所以这是我在sqlite加密过程中收到隐式声明和错误响应的唯一原因吗?
解决方法
是的,这就是您收到该编译器警告的原因。在iOS随附的libsqlite3版本中未定义函数sqlite3_key()。添加函数声明将无济于事-可以解决该编译器警告,但这仅意味着您会收到链接器错误,因为该函数未在任何地方定义。
如果您购买了SEE,则可以构建自己的SQLite副本,将其嵌入到应用程序中,而不必使用系统的libsqlite3。这意味着当应用程序商店提交过程询问您的应用程序是否包含加密时,您将不得不说“是”,这意味着您可以花更多的时间和精力来提交应用程序。我不确定是否有明确迹象表明苹果是否会接受它,也许他们会接受,但是众所周知,它们会让人们感到惊讶。
, 如果使用SQLCipher,则需要在应用程序的C标志中定义SQLITE_HAS_CODEC。就这样。