gpt4 book ai didi

android NDK,在另一个android NDK项目中使用已编译的.so库中的函数

转载 作者:太空宇宙 更新时间:2023-11-03 11:18:18 25 4
gpt4 key购买 nike

我的问题是,我不知道如何调用 .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从这一点来看,我不知道如何使用该库。如何调用该库中的任何函数?

最佳答案

根据我从问题中了解到的情况,您已经编译了一个 so 文件并且它运行于让我们说项目 A 及其工作。现在,您想在项目 B 中使用它。你不能直接使用项目B中的编译库。问题是你的功能代码中的签名。对于不同的包名,相应的函数签名会发生变化。

JNIEXPORT jint JNICALL Java_com_your_packageA_class_method(JNIEnv *d, jobject e, jstring f)
{
//some action

}

您需要一个包含类的 jar,以便使用已编译的 so 文件调用 native 函数,使其可供项目 B 访问。

这就是它的工作方式 Project B 将调用 jar,jar 将调用已编译的 so 文件并将结果返回给 A。

关于android NDK,在另一个android NDK项目中使用已编译的.so库中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13267208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com