我的问题是,我不知道如何调用函数表单.so库。 我已经成功编译了NDK库spatialite-android,并且在android Java应用程序中使用它没有任何问题。但我不知道在另一个NDK项目中如何使用它。我在Android.mk文件中添加了它:
APP_ABI := armeabi armeabi-v7a
APP_PLATFORM := android-8
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := UsingSpatialite
LOCAL_SRC_FILES := UsingSpatialite.c
LOCAL_LDLIBS := -llog -lGLESv1_CM
include $(BUILD_SHARED_LIBRARY)
LOCAL_PATH := /home/spatialite/jni
include $(CLEAR_VARS)
LOCAL_MODULE := libjsqlite
LOCAL_SRC_FILES := libjsqlite/libjsqlite.so
include $(PREBUILT_SHARED_LIBRARY)
库libjsqlite.so(android-spatialite)已成功添加到:libs / armeabi / libjsqlite.so 从这一点来说,我不知道如何使用该库。如何调用该库中的任何函数?
答案 0 :(得分:0)
从我对问题的理解,你已经编写了一个so文件,它运行起来让我们说项目A及其工作。现在,您想在项目B中使用它。 您不能直接在Project B中使用编译库。问题是您的功能 代码中的签名。对于不同的包名,相应的功能签名将会改变。
JNIEXPORT jint JNICALL Java_com_your_packageA_class_method(JNIEnv *d, jobject e, jstring f)
{
//some action
}
您需要一个包含类的jar,以便使用已编译的so文件调用本机函数,以使Project B可以访问它。
这是它的工作原理项目B将调用jar,它将调用编译的so文件并将结果返回给A.