在Android中如何使用system/lib下的库中的函数?

wdsr90 2012-03-16 11:09:05
在Android的system/lib目录下,有系统自带的一些动态库,如何可以使用这些库中已经定义好的函数呢?比如在libreference-ril.so中,有一个函数static void onRequest(),有没有什么方法可以在我通过jni写的C文件中调用这个函数呢?谢谢!
...全文
544 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wdsr90 2012-03-19
  • 打赏
  • 举报
回复
嗯,这两天特地研究了一下如何引用链接库,在我博客写了篇文章,望指点,谢谢![Quote=引用 2 楼 undiif123 的回复:]
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("……
[/Quote]
wdsr90 2012-03-17
  • 打赏
  • 举报
回复
谢谢您的回复,特地了解了一下JNA技术,发现真的很实用[Quote=引用 3 楼 bluirdead 的回复:]
给LZ建议:不要用JNI过程与步骤太复杂,还容易出错。
可以使用JNA,我前几天刚问过这个问题,去看一下,很简单。
http://apps.hi.baidu.com/share/detail/31610125
[/Quote]
bluird 2012-03-16
  • 打赏
  • 举报
回复
给LZ建议:不要用JNI过程与步骤太复杂,还容易出错。
可以使用JNA,我前几天刚问过这个问题,去看一下,很简单。
http://apps.hi.baidu.com/share/detail/31610125
octopus666 2012-03-16
  • 打赏
  • 举报
回复
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 就可以当函数使用了
zhuangfk 2012-03-16
  • 打赏
  • 举报
回复
在android.mk文件中加入
LOCAL_LDLIBS:= 相应的库名

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

然后就可以调用了

80,356

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧