似乎 SQLCipher 是作为 SQLite 源 + 修改的签出分发的,通过快速查看来判断 - 这是多文件版本而不是“合并”。因此,您需要一个能够构建 SQLite 源代码的环境,这意味着一堆 unixy 应用程序。
就个人而言,我会在 SQLCipher 源档案和它包含的 SQLite 版本之间进行比较(从 VERSION 文件来看,这似乎是 SQLCipher 1.8.2 的 SQLite 3.7.2) - 这应该给出一个想法对源 SQLite 文件以及特定于 SQLCipher 的列表文件进行修改(如果有)。
为避免手动构建 OpenSSL 的麻烦,您可以获取预构建版本,这样您就可以摆脱 Perl 依赖项(iirc OpenSSL 可以使用 Visual C++ 构建良好,因此 MingW 不应成为依赖项)。
如果 SQLCipher 作者没有故意将他的特定代码部分从 SQLite 中分离出来的工作很棘手(他可能有,从销售 win32 二进制文件中获利),你会能够接受他的更改并与 SQLite 合并版本和预构建的 OpenSSL 二进制文件相结合,这应该可以非常轻松地嵌入到 Visual Studio 解决方案中。
当然,这意味着如果你想升级到更新版本的 SQLCipher,你必须完成提取步骤,但这可能是值得的,除非你真的想安装一个 cygwin 开发环境能够构建这个单一的库。
或者,您可以在 *u*x 机器(无论是 linux、*BSD 还是 Mac OS X shell)上执行 SQLCipher 的 配置 步骤,因为 compile 步骤不应该需要所有时髦的工具。
更新:
我检查了 SQLite 的(版本 3.7.2)[http://www.sqlite.org/src/info/42537b6056] 并针对 SQLCipher 1.1.8 发行版运行了一个差异,这似乎是一个相当合理的提取修改部分的任务:
Makefile.in - 为新的加密文件添加了引用。
tool/mksqlite3c.tcl:为新加密文件添加的引用。
src/pragma.c - 添加一个块,标记为 /** BEGIN_CRYPTO **/
src/pager.c - 添加一个块,标记为 /** BEGIN_CRYPTO **/
src/crypto.h - 新文件。
src/crypto.c - 新文件。
此外,仅仅为了获得 AES 加密支持而依赖 OpenSSL 似乎有点矫枉过正——基于 SQLCipher 构建新的东西以使用专用(而且更小)的 AES 包会更好。