熟悉JNI的进
最近刚学JNI 在JNI的学习中遇到了如下的问题
在调用一个动态链接库的时候 给我抛出了如下的异常
java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1311]: 33 cannot locate 'malloc'...
动态链接库是在ubuntu10下通过gcc生成的
以下是c代码
#include "com_jni_test_NativeJniAdder.h"
#include <malloc.h>
JNIEXPORT jint JNICALL Java_com_jni_test_NativeJniAdder_getRes
(JNIEnv * env, jclass jobj, jint a, jint b)
{
int * p = (int *)malloc(sizeof(int));
*p = a * b;
return *p;
}
这个c文件是对JNI头文件 com_jni_test_NativeJniAdder.h 的实现
JAVA层调用代码
static
{
try
{
System.loadLibrary("NativeJniAdder");
}
catch (Exception e)
{
Log.i(TAG, e.toString());
}
}
测试平台是android 2.35 该so文件被我放置到了 /system/lib 下 so文件可以被找到 但加载时会报错 如下错误
java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1311]: 33 cannot locate 'malloc'...
这个c文件的linux下编译成可运行的文件 是可以执行的 但在android下动态链接库无法调用
请各位帮下忙 谁遇到如上的问题 麻烦指教
[解决办法]
Ubuntu上编译的动态库怎么能到Android中运行呢,平台架构也是不一样的。
你得把它放到Android源码工程下编译,或是使用ndk编。
[解决办法]
下载
《JNI Programmer’s Guide and Specification.pdf》
看一下,就明白了。