从Linux C ++代码中的android中创建的.so文件调用函数

时间:2018-03-26 06:02:19

标签: android c++ c java-native-interface

我有来自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不关心。

1 个答案:

答案 0 :(得分:0)

在非Android项目中无法使用android .so文件。类似的问题是here