我有来自apk的.so文件。使用命令nm -D libnative-lib.so我获取了函数列表。我需要调用名为Java_com_example_nativelib_utils_Constants_getStringFromJNI
的函数。我写了下面的代码:
#include <stddef.h>
#include <dlfcn.h>
#include <stdio.h>
int init_library() {
void* hdl = dlopen("./libnative-lib.so", RTLD_LAZY);
if(hdl == 0)
return 0;
else return 1;
}
int main() {
printf("%s\n", (init_library() ? "OK": "ERROR"));
}
并制作文件:
all: exe
exe: main.c
gcc main.c -fPIC -ldl -o main
但是程序的结果总是&#34; ERROR&#34;。我尝试了x86和armeabi-v7a架构中的libnative-lib.so(其他不存在)。如何从中加载库和调用函数? C ++或C不关心。