Я столкнулся с проблемой и хотел бы знать, почему это происходит.
У меня есть проект, который состоит из файла Java
и некоторых файлов кода JNI & C++
.Я строю JNI and C++
код через cygwin
, который является частью Android ndk-tools.Ниже мой Android.mk
файл
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := cube
LOCAL_CFLAGS := -DANDROID_NDK
LOCAL_SRC_FILES := Testing.cpp
LOCAL_LDLIBS := -lGLESv1_CM
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := jni_opengl
LOCAL_SRC_FILES := jni_openglcube.cpp
LOCAL_SHARED_LIBRARIES := cube
include $(BUILD_SHARED_LIBRARY)
В приведенном выше сценарии модуль cube
написан на стандартном C++
, который выполняет некоторые операции opengl
, а jni_opengl
- на JNI
.Сценарий выше компилируется нормально, но когда я изменяю строку 8 include $(BUILD_SHARED_LIBRARY)
на include $(BUILD_STATIC_LIBRARY)
, я начинаю получать сообщение об ошибках методов opengl, которых нет в Testing.cpp
.
Мой вопрос: почему в случае shared library
Android может найти ссылки на метод opengl
и почему нет, когда я изменяю его на static library
?