我正在研究SQLite File Encryption。我添加了sqlCipher&加密框架在我的项目中成功。
现在,当我尝试在这一行编译我的应用程序时
int rc = sqlite3_key(database, [key UTF8String], strlen([key UTF8String]));
它表示函数'sqlite3_key'
的隐式声明所以上面的行“隐式声明”听起来像是定义了函数但没有声明。但我必须在哪里声明?
在互联网上搜索under this article时,它表示像SQLite加密扩展(SEE)一样不公开。我必须以2000美元左右的价格购买它。
SEE - > http://www.hwaci.com/sw/sqlite/see.html
所以这是我获得Implicit声明的唯一原因。 sqlite加密过程中的错误响应?
答案 0 :(得分:20)
如果您使用SQLCipher,则需要在应用程序的C标志中定义SQLITE_HAS_CODEC。多数民众赞成。
答案 1 :(得分:6)
是的,这就是你得到编译器警告的原因。函数sqlite3_key()未在iOS附带的libsqlite3版本中定义。添加函数声明不会有帮助 - 它会修复编译器警告,但这只是意味着你会得到链接器错误,因为函数没有在任何地方定义。
如果您购买了SEE,您可以构建自己的SQLite副本,将其嵌入到您的应用程序中,而不是使用系统的libsqlite3。这意味着当应用商店提交过程询问您的应用是否包含加密时,您必须说“是”,这意味着在您提交应用之前需要额外的文书工作和时间。我不确定是否有任何明确的迹象表明苹果是否会接受它 - 可能他们会这样做,但他们会让人们感到惊讶。