Android.mk里添加编译选项
LOCAL_LDLIBS := -L . -ldl
添加头文件:
#include <dlfcn.h>
代码调用:
JNIEXPORT jint JNICALL
Java_com_image_JNI_add( JNIEnv* env,
jobject obj,
jint a,
jbyte b)
{
void* filehandle = dlopen("/data/data/com.test/lib/libimage-jni.so", RTLD_LAZY ); // 打开原so文件
if(filehandle)
{
int (*oldmethod) (int,int);
oldmethod= (int(*)(int,int))dlsym(filehandle, "test"); //引入原so中的函数
if( oldmethod)
{
//调用该函数
ac = oldmethod(1,2);
}
}
return ac;
}
两个so 库都放在工程的libs/armeabi目录下。
本文介绍如何在Android应用中通过动态加载方式调用不同SO文件中的函数。具体步骤包括在Android.mk中配置编译选项、添加必要的头文件,并通过dlopen、dlsym等函数实现跨SO文件的方法调用。
1413

被折叠的 条评论
为什么被折叠?



