Я пытаюсь создать проект 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'
Извините за плохой английский.
Пожалуйста помоги.
Я нашел ответ. См. 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)