问题:cocos2d-x 中集成 sqlcipher,为啥不需要再包含 openssl 的静态库?
1)sqlcipher 中起作用的实际上只有 sqlite3.c 这一个源文件,它引用了 openssl 的几个头文件
#include <openssl/rand.h>
#include <openssl/evp.h>
#include <openssl/hmac.h>
2)cocos2d-x 2.x 的 libcurl.a 静态库文件中,实际上已经包含了 openssl 的目标文件(奇怪的是没找到 openssl 相关的头文件)
3)cocos2d-x 2.x 的工程集成 sqlcipher 只需要 sqlite3.c 源文件和 openssl 的相关头文件即可!
4)下面这个名为 Xxx-LinkMap-normal-arm64.txt 的文件,包含了要将哪些目标文件链接到最终的可执行文件的信息。可以看到,libcurl.a 静态库文件中确实是包含了 openssl 目标文件的(在 Build Settings 中搜索 map,Linking => Path to Link Map File => Debug 的值即为该文件的所在路径)
关键字:rand
[264] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(bn_rand.o)
[351] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(md_rand.o)
[367] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(rand_egd.o)
[368] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(rand_lib.o)
[369] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(rand_unix.o)
[404] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(tb_rand.o)
关键字:evp
[324] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(evp_asn1.o)
[325] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(evp_enc.o)
[326] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(evp_lib.o)
[327] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(evp_pbe.o)
关键字:hmac
[298] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(e_aes_cbc_hmac_sha1.o)
[307] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(e_rc4_hmac_md5.o)
[331] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(hmac.o)
本文深入探讨了在Cocos2d-x 2.x环境中集成SQLCipher的过程,揭示了为何无需额外包含openssl静态库的原因。通过解析SQLCipher核心组件与libcurl.a静态库之间的关系,以及Cocos2d-x工程如何仅依赖关键源文件和头文件实现整合,阐述了这一集成背后的逻辑。
1162

被折叠的 条评论
为什么被折叠?



