当我使用时
#include<jni.h>
#include "convert.h"
#include "com_jniso_CallJni.h"
#include<stdio.h>
JNIEXPORT void JNICALL Java_com_jniso_CallJni_takeint(JNIEnv *env,jclass c)
{
setint();
}
JNIEXPORT jint JNICALL Java_com_jniso_CallJni_takedouble(JNIEnv *env,jclass c)
{
return getdouble();
}
我在编译时遇到错误
Compile arm : Met <= Methodscall.c
D:/workspace/methods/jni/convert.h:3: warning: 'setint' used but never defined
D:/workspace/methods/jni/convert.h:4: warning: 'getdouble' used but never defi
d
SharedLibrary : libMet.so
D:/workspace/methods/obj/local/armeabi/objs/Met/Methodscall.o: In function `Java
_com_jniso_CallJni_takedouble':
D:/workspace/methods/jni/Methodscall.c:11: undefined reference to `getdouble'
D:/workspace/methods/obj/local/armeabi/objs/Met/Methodscall.o: In function `Java
_com_jniso_CallJni_takeint':
D:/workspace/methods/jni/Methodscall.c:7: undefined reference to `setint'
collect2: ld returned 1 exit status
make: *** [/cygdrive/d/workspace/methods/obj/local/armeabi/libMet.so] Error 1
如果我在原生声明中提到静态。 它编译成功。 但是在跑步的时候我正在接受
UnsatisfiedLinkError。 WARN / dalvikvm(1230):未找到任何实施 原生Lcom / corpus / NativeLib; .setint()V
请帮帮我 谢谢&amp;此致
答案 0 :(得分:0)
我使用.so文件作为共享库。从共享库我们无法调用静态方法。并且在上面我的库没有正确包含。因为格式与android.Hence不兼容它不是工作