gpt4 book ai didi

android - openssl 作为 Android native 代码中的共享库

转载 作者:太空狗 更新时间:2023-10-29 13:29:50 25 4
gpt4 key购买 nike

我刚刚为 Android 编译了 OpenSSL。我有 libcrypto.so 和 libssl.so 共享库。我创建了一个名为 TrialApp 的示例 Android 应用程序。这个想法是使用一些调用 libssl 和 libcrypto 共享库的 native 函数。因此,在我的 jni 目录下,我有一个 TrialApp.cpp,其中包含一个简单的 SHA1 示例。这是我在 Eclipse 上的 NDK 应用程序目录的树结构:

TrialApp
|
|-->Activity.java
|
|-->TrialApp.java(which includes System.LoadLibrary calls)
|
|-->jni
|-->TrialApp.cpp
|
|-->Android.mk
|
|-->includes
| |
| |-->openssl (dir containing *.h files)
|
|-->precompiled
|-->libssl.so
|-->libcrypto.so

这是Android.mk文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := TrialApp
LOCAL_SRC_FILES := TrialApp.cpp
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/includes/openssl
LOCAL_LDLIBS := -llog
LOCAL_LDLIBS += $(LOCAL_PATH)/precompiled/libssl.so
LOCAL_LDLIBS += $(LOCAL_PATH)/precompiled/libcrypto.so
LOCAL_STATIC_LIBRARIES := sslx cryptox

include $(BUILD_SHARED_LIBRARY)

但是编译器无法找到 TrialApp.cpp 中的 openssl header 。

我得到的错误: fatal error :openssl/evp.h:没有这样的文件或目录

有人能告诉我怎么解决吗?谢谢。

最佳答案

包含目录在编译器标志 -I 中设置:因此,使用适当的键和 header 位置设置 LOCAL_CFLAGS 变量,如下所示:LOCAL_CFLAGS += $(cf_includes)其中 cf_includes 定义为 cf_includes:= includes/openssl + cf_includes := $(addprefix -Ijni/,$(cf_includes))
换句话说,您必须像这样污染 LOCAL_CFLAGS:
LOCAL_CFLAGS += -Ijni/includes/openssl

尝试用

替换你的android.mk
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

c_includes := $(LOCAL_PATH)
cf_includes:= includes/openssl

cf_includes := $(addprefix -Ijni/,$(cf_includes))

export_c_includes := $(c_includes)

LOCAL_MODULE := TrialApp
LOCAL_SRC_FILES := TrialApp.cpp
LOCAL_CFLAGS += $(cf_includes)
LOCAL_EXPORT_C_INCLUDES := $(export_c_includes)
LOCAL_LDLIBS := -llog
LOCAL_LDLIBS += $(LOCAL_PATH)/precompiled/libssl.so
LOCAL_LDLIBS += $(LOCAL_PATH)/precompiled/libcrypto.so
LOCAL_STATIC_LIBRARIES := sslx cryptox

include $(BUILD_SHARED_LIBRARY)


希望对你有帮助

关于android - openssl 作为 Android native 代码中的共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16987038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com