【发布时间】:2016-03-16 06:31:39
【问题描述】:
我已经尝试为 android 构建 cryptopp 库。我已经使用了本教程的这一部分。 https://www.cryptopp.com/wiki/Android_(Command_Line)
$ cat build-all-android.sh
#!/bin/bash
for arch in armeabi armeabi-v7a armeabi-v7a-hard arm64-v8a mips mips64 x86 x86_64
do
. ./setenv-android.sh $arch stlport
if [ "$?" -eq "0" ]; then
make -f GNUmakefile-cross distclean
make -f GNUmakefile-cross static dynamic
sudo make -f GNUmakefile-cross install PREFIX=/usr/local/cryptopp/android-$arch
fi
done
我能够制作图书馆。 我的问题是,我无法将它添加到我的项目中。 似乎我需要编辑我的 Android.mk 文件,但我似乎无法正确执行。我将此块添加到我的 Anroid.mk
#########################################################
# STLport library
include $(CLEAR_VARS)
STLPORT_INCL := /Applications/Cocos/Android/android-ndk-r10e/sources/cxx-stl/stlport
STLPORT_LIB := /Applications/Cocos/Android/android-ndk-r10e/sources/cxx-stl/stlport/libs/$(TARGET_ARCH_ABI)
LOCAL_MODULE := stlport_shared
LOCAL_SRC_FILES := $(STLPORT_LIB)/libstlport_shared.so
LOCAL_CPP_FEATURES += rtti exceptions
LOCAL_EXPORT_CPPFLAGS :=
LOCAL_EXPORT_C_INCLUDES := $(STLPORT_INCL)
include $(PREBUILT_SHARED_LIBRARY)
LOCAL_SHARED_LIBRARIES := stlport_shared
#########################################################
# Crypto++ library
include $(CLEAR_VARS)
CRYPTOPP_INCL := /usr/local/cryptopp/android-$(TARGET_ARCH_ABI)/include
CRYPTOPP_LIB := /usr/local/cryptopp/android-$(TARGET_ARCH_ABI)/lib
LOCAL_MODULE := cryptopp
LOCAL_SRC_FILES := $(CRYPTOPP_LIB)/libcryptopp.so
LOCAL_CPP_FEATURES := rtti exceptions
LOCAL_EXPORT_C_INCLUDES := $(CRYPTOPP_INCL) $(CRYPTOPP_INCL)/cryptopp
include $(PREBUILT_SHARED_LIBRARY)
LOCAL_SHARED_LIBRARIES := cryptopp
#########################################################
我基于 Crypto++ wiki 页面 Android Activity,它引用了 AndroidPRNG,它演示了在 Android 上使用 Crypto++ 作为共享对象。
我被卡住了,因为我无法让它工作。我对android很陌生,所以我不知道该怎么做。我能够运行它的 ios 版本。我遵循了 XCode 教程。正是这一点让我发疯。我会很感激我能得到的所有帮助。我的构建方式有问题吗?构建后,我是将它复制到我的项目还是只是链接已安装的版本就可以了?如何正确地将其添加/链接到我的项目?抱歉问了这么多问题。
PS:我的项目使用 cocos2dx。也许值得一提。
【问题讨论】:
-
另外,如果 Cocos2d-x 正在使用 GNU 运行时,那么您需要切换到 GNU,并停止使用 STLport。混合和匹配这些运行时会导致模糊的内存错误。
-
@jww 我已经问过我的问题了。我如何正确构建它?我将对构建的库做什么,将其复制到项目中或在安装后将其链接?如何在 android.mk 中正确地将其链接到我的项目?
-
@jww 我试过了,但是当我运行我的项目 T_T 时出现编译器错误,就像它无法引用 CryptoPP 类的 vtable 一样
-
@jww 我认为我链接它的方式有问题,这就是为什么我将用于链接库的部分代码粘贴到我的 android.mk 中:(
标签: android shared-libraries cocos2d-x static-libraries crypto++