如何在一个普通的非Android Java应用程序中使用NDK编译的JNI库?

 2023-01-19    365  

问题描述

我有一个JNI库,该库由NDK使用Android应用程序使用.
我没有来源,只为某些拱门编译了.SO文件.

我想在64位x86 Linux PC上的简单控制台Java应用程序中从此库中调用函数.

如何在一个普通的非Android Java应用程序中使用NDK编译的JNI库?

我做了什么:

  1. 我从x86_64文件夹中获取库,并使用System.loadLibrary
  2. 将其加载到我的Java程序中

  3. 试图启动该程序,并没有详细信息liblog.so: cannot open shared object file: No such file or directory.
  4. 所以我从官方ndk中拿了liblog.
  5. 为libstdc ++做同样的事情.
  6. 打开libc.so,它似乎只是一个文本文件…用适当的libc.so file
  7. 代替它

  8. 终于对我的图书馆undefined symbol: __stack_chk_guard评论都变得不满意.看来我的图书馆被Android的东西强烈收紧

我该怎么做才能在我的普通程序中使用此库,而无需任何Android特定的?

推荐答案

只用几句话 – android和桌面Linux二进制文件是不兼容,即使它们针对相同的CPU架构.

以上所述是小编给大家介绍的如何在一个普通的非Android Java应用程序中使用NDK编译的JNI库?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/25885.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。