импортировать локальные подмодули в Android-проект JNI

0

Я пытаюсь создать проект 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-build с ошибкой

/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-ndk

1 ответ

0

Я нашел ответ. См. Diff

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)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню