我原本想静态编译SQLCipher,因为它似乎更容易链接,但我没有成功。我能找到的唯一讨论在OS X上编译SQLCipher的地方是this blog post,但即便他也无法使静态编译工作。
我能够为SQLCipher进行动态编译工作,并且我能够使用博客中提到的sqlcipher命令行程序,但现在我想在已编译的C ++程序中使用sqlcipher。我从未在命令行中直接处理动态编译,所以我有点迷失。
看起来它生成了一个libtool文件libsqlcipher.la所以我想知道如何在C ++ #include "libsqlcipher.h"
中导入它?看看libtool的教程,他们大多提到如何编译它,但我没有找到任何关于如何链接它的简单示例。
我根据我所看到的情况尝试了这样的事情,但我遇到了一些错误:
libtool g++ -o test EncryptDatabases.cpp sqlcipher/libsqlcipher.la
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: can't open file: g++ (No such file or directory)
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file: EncryptDatabases.cpp is not an object file (not allowed in a library)
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file: sqlcipher/libsqlcipher.la is not an object file (not allowed in a library)
答案 0 :(得分:0)
答案是肯定的,但评论的时间太长了。
据我记得,首先应该明确告诉libtool将源文件编译成"库对象":
libtool --mode=compile g++ -c EncryptDatabases.cpp -o EncryptDatabases.lo
然后它应该链接二进制文件:
libtool --mode=link g++ -o test EncryptDatabases.lo sqlcipher/libsqlcipher.la
请参阅docs