dlopen加载so动态库

发布于 2021-12-02 00:08:58 字数 304 浏览 886 评论 5

一般的加载顺序是在程序的入口

System.loadLibrary("A");

但是由于有别的需求,不能够在Java来加载so库,想转到c++层加载

使用的

dlopen("libA.so", RTLD_LAZY)

但是加载完libA.so之后发现Java层调用libA.so里面的jni方法是调用不到的,并不知道是没有加载成功还是加载的方式不对或者不完整。

求助一下各位帮忙解答或者提供相关资料。

我这边也在解决中。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

掩饰不了的爱 2021-12-02 06:41:28

就是不能够说直接dlopen了之后,so里面的所有jni方法都能提供给java调用么?要一个个手动映射调用?

墨洒年华 2021-12-02 06:28:56

回复
手动加载动态链接库,都有映射,就是用System.loadLibrary("A");也要映射。

旧城烟雨 2021-12-02 05:49:33

回复
感觉 好麻烦,里面有一百多个jni方法,还有好多的调用。要改到伤心落泪啊。

能否归途做我良人 2021-12-02 02:54:52

回复
加油咯,我也不是搞android的

妖妓 2021-12-02 02:53:03

dlopen后要通过
dlsym对方法进行映射

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文