我本来想静态地编译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)
最佳答案
没有答案,是的,但是对于评论太久了。
据我记得,首先应该明确告知libtool将源文件编译为“库对象”:
libtool --mode=compile g++ -c EncryptDatabases.cpp -o EncryptDatabases.lo
那么它应该链接二进制文件:
libtool --mode=link g++ -o test EncryptDatabases.lo sqlcipher/libsqlcipher.la
见docs
关于c++ - 使用C++在OS X上动态链接SQLCipher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23209431/