我创建了一个.so文件,该文件通过JNI公开了对Java的本地C调用。这很好用,如果我只是在C代码中使用系统库,则可以将应用程序部署到Android系统上。但是,如果要调用其他.so文件中的函数,则无法使我的项目正确链接。
例如,假设我有一个“ libotherso.so”文件,该文件包含用C定义的API,可以从我用来生成“ libMyJNILibrary.so”的“ MyJNILibrary.c”代码中调用该API。
我试图按如下方式更改我的Android.mk文件:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := MyJNILibrary
LOCAL_SRC_FILES := MyJNILibrary.c
LOCAL_LDLIBS += -lotherso
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
但是,当我对此调用ndk-build时,发现-lotherso时出现错误。我在哪里放置“ libotherso.so”文件,以便ndk-build可以接收它?
感谢您的任何帮助,您可以提供。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := otherso
LOCAL_SRC_FILES := ../lib/libotherso.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := MyJNILibrary
LOCAL_SRC_FILES := MyJNILibrary.c
LOCAL_SHARED_LIBRARIES := otherso
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
请注意,LOCAL_SRC_FILES是相对于LOCAL_PATH的。
不要忘记在自己的JNI库之前加载依赖项:
static {
System.loadLibrary("otherso");
System.loadLibrary("MyJNILibrary");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2769 次 |
| 最近记录: |