首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

熟习JNI的进

2013-09-30 
熟悉JNI的进最近刚学JNI在JNI的学习中遇到了如下的问题在调用一个动态链接库的时候 给我抛出了如下的异常

熟悉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》
看一下,就明白了。

热点排行