我遇到了一个问题,想知道为什么会出现这种情况。
我的项目包含一个 Java
文件和一些 JNI & C++
代码文件。我通过 cygwin
构建 JNI 和 C++
代码,它是安卓 NDK 工具的一部分。下面是我的 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)
时,开始出现关于 Testing.cpp
中未找到 opengl
方法的错误。我的问题是:为什么在使用
共享库
的情况下,安卓能够找到与 opengl
相关的方法引用,而在我改用 静态库
后却无法找到呢?