dlopen加载so动态库
一般的加载顺序是在程序的入口
System.loadLibrary("A");
但是由于有别的需求,不能够在Java来加载so库,想转到c++层加载使用的
dlopen("libA.so", RTLD_LAZY)
但是加载完libA.so之后发现Java层调用libA.so里面的jni方法是调用不到的,并不知道是没有加载成功还是加载的方式不对或者不完整。
求助一下各位帮忙解答或者提供相关资料。
我这边也在解决中。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
就是不能够说直接dlopen了之后,so里面的所有jni方法都能提供给java调用么?要一个个手动映射调用?
回复
手动加载动态链接库,都有映射,就是用System.loadLibrary("A");也要映射。
回复
感觉 好麻烦,里面有一百多个jni方法,还有好多的调用。要改到伤心落泪啊。
回复
加油咯,我也不是搞android的
dlopen后要通过
dlsym对方法进行映射