0

我已经按照 iOS 的 Official SQLCipher Site 中的文档进行操作。我导入了 sqlite3.h。我添加了 openssl 和 sqlcipher xode.proj。他们其实都很好。

它正在加密数据库,我可以查询它们。构建是好的,除了这个关于 sqlite3_key 的小警告。

我可以看到自定义脚本的逐步构建过程,一切都很好。

我可以在头文件中看到SQLITE_HAS_CODEC本机 sqlite3 中不存在此函数的条件,因为我们使用的是 sqlite 的 sqlcipher 版本。

我已将-DSQLITE_HAS_CODECC 标志和 C++ 标志添加到项目和目标构建设置中。

除了这个警告之外,总体 SQLCipher 工作正常:

函数“sqlite3_key”的隐式声明在 C99 中无效

在 Xcode 中分析和存档二进制文件期间不断弹出。

通过 Debug 构建它不会引发此警告。

我还有什么需要做的吗?

4

1 回答 1

1

我(仍然)假设您在调试和发布配置之间有一些不同的构建设置(例如“标题搜索路径”)。如果在构建设置中找不到问题,我建议检查源文件的预处理输出:

  • 选择给出警告的 .m 文件。
  • 从 Xcode 菜单中选择产品 -> 生成输出 -> 预处理文件。
  • 在预处理输出窗口的底部,切换
    • “正在运行”(默认使用调试配置)和
    • “Profiling”(使用 Release 配置)。

在预处理的输出中,搜索sqlite3_key()两个版本中的声明。您还可以检查是否包含正确版本的“sqlite3.h”。如果没有标题搜索路径,就会有一行

# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/usr/include/sqlite3.h" 1 3 4

为 SQLCipher 正确设置标头搜索路径后,“sqlite3.h”的路径应该不同,因此您可以检查并再次比较“运行/调试”和“分析/发布”输出。

于 2013-06-05T06:07:22.090 回答