0
我已經創建了一個.so文件,它通過JNI公開了對Java的本地C調用。這很好,我可以將應用程序部署到我的Android系統,如果我只是在我的C代碼中使用系統庫。但是,如果我想調用其他.so文件中的函數,我無法讓我的項目正確鏈接。例如,假設我有「libotherso.so」文件,其中包含C中定義的API,我可以從用於生成「libMyJNILibrary.so」的「MyJNILibrary.c」代碼調用該文件。將依賴的.so文件與Android的ndk-build鏈接起來
我試圖改變我的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-建設,我得到發現-lotherso錯誤。我在哪裏放置「libotherso.so」文件,以便ndk-build可以將其提取出來?
感謝您提供的任何幫助。
謝謝!我在我的項目中創建了一個名爲「lib」的新目錄,並在那裏複製了libotherso.so文件。我還根據您的建議更新了Android.mk文件,並在「MyJNILibrary」之前加載了「otherso」庫。 ndk-build比以前更進一步,但仍然存在一個錯誤: –
我還應該提到我已經將otherso.h文件複製到MyJNILibrary.c所在的jni文件夾中。我還重新編譯了在調用ndk-build之前加載適當的「javac」和「javah -jni」調用兩個庫的java代碼。我還在做什麼錯了? –
順便說一句,我不是想從我的java代碼中調用「libotherso.so」。我試圖從用於製作「libMyJNILibrary.so」的MyJNILibrary.c代碼中將C調用成「libotherso.so」。 –