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

在linux C+;中从android中创建的.so文件调用函数+;代码,android,c++,c,java-native-interface,Android,C++,C,Java Native Interface,我有。所以我从apk拿的文件。使用命令nm-dlibnative-lib.so,我获得了函数列表。我需要调用名为的函数Java\u com\u example\u nativelib\u utils\u Constants\u getStringFromJNI。我写了下面的代码: #include <stddef.h> #include <dlfcn.h> #include <stdio.h> int init_library() { void* h

我有。所以我从apk拿的文件。使用命令nm-dlibnative-lib.so,我获得了函数列表。我需要调用名为
的函数Java\u com\u example\u nativelib\u utils\u Constants\u 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"));
}

但程序的结果总是“错误”。我尝试了x86和armeabi-v7a体系结构中的libnative-lib.so(其他不存在)。如何加载库并从中调用函数?C++或C不关心.< /p> 不可能使用Android。所以非Android项目中的文件。类似的问题是

删除-fPIC选项并打印错误日志。如果(hdl==0){fputs(dlerror(),stderr);exit(1)}谢谢,我发现了错误所在您应该检查您的LD_库路径
all: exe

exe:    main.c
        gcc main.c -fPIC -ldl -o main