【发布时间】:2014-01-15 14:33:42
【问题描述】:
在 Android NDK 中,我尝试从小型“模块”(静态库)构建共享库。例如:
Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := module1
LOCAL_SRC_FILES := module1.c
include $(PREBUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := module2
LOCAL_SRC_FILES := module2.c
include $(PREBUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := main-module
LOCAL_STATIC_LIBRARIES := module1 \ module2
include $(BUILD_SHARED_LIBRARY)
但是,当我尝试从共享库(主模块)调用模块 1 和模块 2 的函数时,它们不可见。
module1.c 和 module2.c 中的函数是可导出的,因为如果构建这样的库,我可以直接调用它们:
include $(CLEAR_VARS)
LOCAL_MODULE := module1
LOCAL_SRC_FILES := module1.c
include $(BUILD_SHARED_LIBRARY)
如何标记静态库中的函数在共享库中可见(如第一个示例中所述)。可能需要任何编译器/链接器标志吗?
【问题讨论】:
标签: android c android-ndk java-native-interface static-libraries