【问题标题】:import local submodules in android jni project在android jni项目中导入本地子模块
【发布时间】:2013-11-28 20:17:24
【问题描述】:

我正在尝试创建具有结构的 android jni 项目。

我想创建静态库 test_module 并将其包含到主共享库监视器中

jni目录包含

jni
 |-> MonitorPreview.cpp
 |-> Processor.cpp
 |-> Android.mk
 |-> test_module
      |-> IModule.cpp
      |-> TestModule.cpp
      |-> Android.mk

在哪里 jni/Android.mk

LOCAL_PATH                             := $(call my-dir)
MY_ROOT                                := $(LOCAL_PATH)

include $(call all-subdir-makefiles)

include $(CLEAR_VARS)
LOCAL_PATH                             := $(MY_ROOT)

LOCAL_MODULE                           := monitor
LOCAL_C_INCLUDES                       := $(LOCAL_PATH)/test_module
LOCAL_SRC_FILES                        := MonitorPreview.cpp \
                                          Processor.cpp
LOCAL_STATIC_LIBRARIES                 := test_module
LOCAL_LDLIBS                           := -llog -landroid
include $(BUILD_SHARED_LIBRARY)
$(call import-module, test_module)

jni/test_module/Android.mk

LOCAL_PATH                             := $(call my-dir)

$(info    local path = $(LOCAL_PATH))

include $(CLEAR_VARS)
LOCAL_MODULE                           := test_module
LOCAL_SRC_FILES                        := IModule.cpp \
                                          TestModule.cpp
LOCAL_EXPORT_C_INCLUDES                := $(LOCAL_PATH)

include $(PREBUILD_STATIC_LIBRARY)

ndk 构建失败并出现错误

/home/pavel/android_dev/android-ndk-r8e/ndk-build all 
local path = jni/test_module
SharedLibrary  : libmonitor.so
/home/pavel/android_dev/android-ndk-r8e/toolchains/arm-linux-androideabi-   4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux- androideabi/bin/ld: ./obj/local/armeabi-v7a/objs/monitor/Processor.o: in function    hrm::Processor::Processor():jni/Processor.cpp:15: error: undefined reference to   'hrm::TestModule::TestModule()'
`collect2: ld returned 1 exit status
make: *** [obj/local/armeabi-v7a/libmonitor.so] Error 1`

抱歉英语不好。

请帮忙。

【问题讨论】:

    标签: android c++ android-ndk


    【解决方案1】:

    我找到了答案。查看差异

    jni/Android.mk

    LOCAL_PATH                             := $(call my-dir)
    MY_ROOT                                := $(LOCAL_PATH)
    
    include $(call all-subdir-makefiles)
    
    include $(CLEAR_VARS)
    LOCAL_PATH                             := $(MY_ROOT)
    
    LOCAL_MODULE                           := monitor
    LOCAL_C_INCLUDES                       := $(LOCAL_PATH)/test_module
    LOCAL_SRC_FILES                        := MonitorPreview.cpp \
                                              Processor.cpp
    LOCAL_LDLIBS                           := -llog -landroid
    include $(BUILD_SHARED_LIBRARY)
    $(call import-module test_module)
    

    jni/test_module/Android.mk

    LOCAL_PATH                             := $(call my-dir)
    
    $(info    local path = $(LOCAL_PATH))
    
    include $(CLEAR_VARS)
    LOCAL_MODULE                           := test_module
    LOCAL_SRC_FILES                        := IModule.cpp \
                                              TestModule.cpp
    LOCAL_EXPORT_C_INCLUDES                := $(LOCAL_PATH)
    
    include $(BUILD_STATIC_LIBRARY)
    

    【讨论】:

      猜你喜欢
      • 2020-12-02
      • 2018-03-19
      • 1970-01-01
      • 2019-10-31
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      • 2021-04-13
      • 2018-06-14
      相关资源
      最近更新 更多