簡體   English   中英

將依賴的.so文件與ndk-build for Android鏈接

[英]Linking dependent .so files with ndk-build for Android

我創建了一個.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) 

但是,當我對此調用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) 

請注意,LOCAL_SRC_FILES是相對於LOCAL_PATH的。

不要忘記在自己的JNI庫之前加載依賴項:

static {
  System.loadLibrary("otherso");
  System.loadLibrary("MyJNILibrary");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM