当前位置: 代码迷 >> Android >> 在Android中怎么使用system/lib下的库中的函数
  详细解决方案

在Android中怎么使用system/lib下的库中的函数

热度:42   发布时间:2016-05-01 21:50:07.0
在Android中如何使用system/lib下的库中的函数?
在Android的system/lib目录下,有系统自带的一些动态库,如何可以使用这些库中已经定义好的函数呢?比如在libreference-ril.so中,有一个函数static void onRequest(),有没有什么方法可以在我通过jni写的C文件中调用这个函数呢?谢谢!

------解决方案--------------------
在android.mk文件中加入
LOCAL_LDLIBS:= 相应的库名

找到相应的.h文件,将文件在想调用onRequest的文件里,包含进这个.h文件

然后就可以调用了
------解决方案--------------------
android.mk
LOCAL_LDLIBS := -llog -lz 像这样-l加库名称
如果没头文件
看是否可以动态调用
例如:

void (*ucnv_convert)(const char *,const char *, char * , int32_t , const char *, int32_t,int32_t*)=0;

void* pDL = dlopen("/system/lib/libicuuc.so", RTLD_LAZY); 
ucnv_convert = (void (*)(const char *, const char *, char * , int32_t , const char *, int32_t,int32_t*))dlsym(pDL, "ucnv_convert_44");

ucnv_convert 就可以当函数使用了

------解决方案--------------------
给LZ建议:不要用JNI过程与步骤太复杂,还容易出错。
可以使用JNA,我前几天刚问过这个问题,去看一下,很简单。
http://apps.hi.baidu.com/share/detail/31610125
  相关解决方案