Android 是否可以执行由Anroid JNI生成的so文件?
我从安卓aar软件包中得到了一个Android 是否可以执行由Anroid JNI生成的so文件?,android,c,java-native-interface,shared-libraries,Android,C,Java Native Interface,Shared Libraries,我从安卓aar软件包中得到了一个.so文件,其中包含x86,x86\u 64,armv7等 我可以调用.so文件中的函数吗 我所经历的 创建了一个main.c #include <stdio.h> int main() { printf("Hello World!\n"); printf("%d", Java_com_scaf_android_client_CodecUtils_stringFromJNI())
.so
文件,其中包含x86
,x86\u 64
,armv7
等
我可以调用.so
文件中的函数吗
我所经历的
创建了一个main.c
#include <stdio.h>
int main() {
printf("Hello World!\n");
printf("%d", Java_com_scaf_android_client_CodecUtils_stringFromJNI());
return 0;
}
您没有使用正确的参数调用该方法,因此即使它进行了链接,也无法工作。JNI方法至少需要一个JVM上下文。如果您知道这个方法的Java声明是什么,那么可以将它映射到JNI版本。看一看如何实例化JVM以进行JNI调用的问题:您没有使用正确的参数调用该方法,因此即使它进行了链接,它也不会工作。JNI方法至少需要一个JVM上下文。如果您知道这个方法的Java声明是什么,那么可以将它映射到JNI版本。看看这个问题,了解如何实例化JVM以进行JNI调用:
main.c:4:15: warning: implicit declaration of function ‘Java_com_scaf_android_client_CodecUtils_stringFromJNI’ [-Wimplicit-function-declaration]
printf("%d", Java_com_scaf_android_client_CodecUtils_stringFromJNI());
^
/tmp/cc9vP9rb.o: In function `main':
main.c:(.text+0x14): undefined reference to `Java_com_scaf_android_client_CodecUtils_stringFromJNI'
collect2: error: ld returned 1 exit status