我试图使用Android-OpenSSLibraries通过AES解密制作简单的测试程序。编译器/链接器向我显示一个错误。编译器:
error: undefined reference to 'AES_set_encrypt_key'
error: undefined reference to 'AES_encrypt'
error: undefined reference to 'AES_set_decrypt_key'
这是我的Android.mk文件,
LOCAL_PATH := $(call my-dir)
$(info $(LOCAL_PATH))
include $(CLEAR_VARS)
LOCAL_MODULE := demo
LOCAL_CFLAGS := -I/some/include/path
LOCAL_LDLIBS := \
-llog \
-lz \
-lm \
LOCAL_SRC_FILES := \
aes_api.c \
io_module.cpp \
jni_native.cpp \
JniConstants.cpp \
JNIHelp.cpp \
libcrypto.so \
PosixFile.cpp \
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/include \
$(LOCAL_PATH)/include/openssl
$(info $(LOCAL_C_INCLUDES))
LOCAL_SHARED_LIBRARIES := \
$(LOCAL_PATH)/libcrypto.so
include $(BUILD_SHARED_LIBRARY)
您的LOCAL_SHARED_LIBRARIES
内容不正确。您必须为其指定模块,而不是共享对象的路径。
定义此变量之前,应具有以下内容:
include $(CLEAR_VARS)
#Name it as you want, it doesn't matter. For consistency, let's name it LibCrypto
LOCAL_MODULE := LibCrypto
LOCAL_EXPORT_C_INCLUDES := <path/to/Libcrypto/includes>
LOCAL_SRC_FILES := <path/to/libCrypto/shared/object>/libcrypto.so
include $(PREBUILT_SHARED_LIBRARY)
然后在您LOCAL_SHARED_LIBRARIES
使用模块名称直接引用它时:
LOCAL_SHARED_LIBRARIES := LibCrypto
请注意,您可以通过定义其他类似的“模块”来添加一个以上的库,甚至可以预先构建自己(使用include $(BUILD_SHARED_LIBRARY)
),然后按以下方式引用多个模块:
LOCAL_SHARED_LIBRARIES := module1 \
module2 \
...
我强烈建议您访问并保留有关Android.mk规范的此链接
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句