android ndk开发:JNI中怎样引用so动态库中的函数最近小弟在进行ndk的开发中遇到无法将动态库中的函数用到
android ndk开发:JNI中怎样引用so动态库中的函数
最近小弟在进行ndk的开发中遇到无法将动态库中的函数用到自己写的JNI函数中,比如:
#include <jni.h>
#include "HelloJni.h"
#include <stdio.h>
JNIEXPORT void JNICALL
Java_HelloJni_displayHelloJni(JNIEnv *env, jobject obj)
{
int i = callFuncLib(); // this function is defined in lib libmy.so
return;
}
情况就是这样, 我需要调用libmy.so动态库中的函数callFuncLib(), 怎样倒入, 是在Android.mk文件中修改make文件,还是用adb push。
注:开发平台是在android 2.0
请大侠们不吝指教一二!!必当高分送上
[最优解释]
jni中用so的函数,这个真没试过,本来so中封装的就是jni的方法了,java层可以直接调用,但是在jni的c实现里,都是c的方法,没法去调用其他jni中的java方法...
libmy.so这个库没有.a的么?只有so的?jni中可以调用c的接口,但是调用java的好像不行
[其他解释]
jni封装C的方法,但是一般c的方法都是以.a的形式编译出来的库
没有试过,你可以在mk文件中假如lib.so的文件名,然后jni的c实现里去调用,不过不知道能不能链到so里函数,你没有试过么?
[其他解释]
http://topic.csdn.net/t/20030520/13/1808721.html
这儿有一个相关的帖子,你作一下参考.
[其他解释]
libmy.so不是java库,是已经写好的c库,我需要用jni封装这个库,jni不就是用来做这个的吗!
[其他解释]
可能是我没有表达清楚, 我的意思就是试着链连so方件。
一个可行的方法就是把我想要用到的libmy.so文件放到ndk的platform/android */*arm/lib目录下,然后在mk文件中用-lmy来连接这个动态库文件。但这个方法不足的就是你需要手动copy库文件到ndk目录下,这不是软件发布时可用到的技术,可能应付一下一时之需。
问一下哪问大侠曾遇到过这个问题的,又是怎么解决的?
[其他解释]
DLOPEN 自己搜搜 对调用需要的接口都需实现
[其他解释]
该回复于2010-12-02 16:03:38被版主删除
[其他解释]
dlopen就可以了
不过android实现的方式和正常linux不一样,需要把so库的源代码拿过来重新编译才可以。
要不然,你得将标准linux的那堆libc及相关的函数库,再搞一套,放在一个新建的/lib或/usr/lib下面才可以。
[其他解释]
我回复了怎么没有加积分呢?
[其他解释]
每天回复有10分可用分...
[其他解释]
两种
1、dlopen方式
2、在mk文件中引用so库,这个so库要push到system/lib下
[其他解释]
留个邮箱,发个android中通过jni调用so的demo你。
[其他解释]
static {
System.loadLibrary("libsetNet"); //
}
public native void setNet(String str);
------其他解决方案--------------------
问题已经解决,很感谢大家的帮助。
1. 在我的问题上不能用dlopen函数,dlopen函数是在已知动态库且动态库已在已知目录下才行,问题是动态库需要我打包到apk中,且能成功访问。
2. 在mk文件下引用so文件,但不需要push到system/libs下,即使你push了,有也有可能push 不进去,因为libs目录是可读的(我说的是ndk-r4),至少我没有成功push进去。
那么为什么不用到ndk自己提供的打包机制呢!用LOCAL_SHARD_LIBS标签就行了,不要忘了在JAVA层Load你想要用到的所有库,被依赖的库要放到依赖库的前面:) 大家好好享受android开发的乐趣吧!
[其他解释]
请问xiakq你是怎么解决在jni里调用so库的问题呢,能否把你的详细调用过程给我说一下吗?我也遇到了同样的问题,但是始终无法解决,邮箱:chufei333@163.com
[其他解释]
我和你一样,也想知道.希望能够解决:379635119@qq.com
谢谢.
我的**.so文件是在.apk包解压后直接拿到的.不知能不能去调用里面的东西.
[其他解释]
你好. 请问你目前解决这个问题了吗?
[其他解释]
你好. 麻烦你能不能提供一个例子 ?
[其他解释]
同上!给个实例呗!!
我邮箱:382978322@qq.com
[其他解释]
你好,能给个代码示例吗,或者把详细步骤说一下,感激不尽!
我邮箱472305056@qq.com
[其他解释]
我也头疼啊,动态库都生成了,但运行在加载到android项目中时,报了一大堆错误,我也看不懂,贴上来,请高手帮看看!
[其他解释]
能提供一个例子吗~~万分感谢~
