函数'sqlite3_key'的隐式声明?

时间:2011-06-15 09:50:24

标签: iphone sqlite cryptography encryption

我正在研究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加密过程中的错误响应?

2 个答案:

答案 0 :(得分:20)

如果您使用SQLCipher,则需要在应用程序的C标志中定义SQLITE_HAS_CODEC。多数民众赞成。

答案 1 :(得分:6)

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

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