使用android的ndk,通过jni调用本地的C++函数,这个C++函数中又调用另一个.so动态链接库,怎么调用呢?

s06221098 2011-12-31 11:08:20
我的本地函数是:
JNIEXPORT jstring JNICALL Java_com_example_android_softkeyboard_Writingboard_rsgString
(JNIEnv *env, jobject object,jint nPointNum,jobjectArray fTrjPoint)
{
……
CRealTimeRcg *pRTStrRcg = new CRealTimeRcg(szCharDic, szCharConf, szLngDic, szLnsegDic, szOversegDic, szOversegConfDic, szUnRcgDic, szBiRcgDic, szBiCode, ws);
……
}

函数中的这个类CRealTimeRcg封装在另一个.so的库中,这个.so库是Linux下生成的,不是交叉编译的,(我也有windows的dll库),我怎么将.so库添加到工程中使用呢?在Android.mk文件中怎么编写呢?
...全文
377 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanjiashang 2012-01-05
  • 打赏
  • 举报
回复
为什么我们要交叉编译,各个编译器编译出来的可执行代码都是针对特定芯片的,例如在pc上编译出的可执行代码一般都是x86的可执行代码,现在手机里很多都是arm的,这时我们就需要交叉编译工具在pc机生成我们需要的arm可执行代码。
存在的问题:老师给你的在linux下生成的so文件,如果不是用交叉编译工具生成的话,在arm上还是不可执行的。
解决办法:让他们用交叉编译工具生成so文件,最好可以拿到源代码,从头走一遍会认识更深刻一点。
s06221098 2012-01-04
  • 打赏
  • 举报
回复
本地函数是交叉编译的,但本地函数里调用的别的c++库还是要交叉编译的吗?这个就太复杂了吧。我没有源代码,老师说只能给我提供我想要的库文件,代码保密。纠结啊,再给指点一下吧。
s06221098 2011-12-31
  • 打赏
  • 举报
回复
急,求高人指点~
yanjiashang 2011-12-31
  • 打赏
  • 举报
回复
不行,只有用交叉编译工具生成的so文件才能运行,你既然自已可以编,我想你有源代码,将源代码用android的交叉编译工具编一个so文件。
s06221098 2011-12-31
  • 打赏
  • 举报
回复
怎么没有人啊,我我我……………………

80,351

社区成员

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

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