Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JNI Android studio和com.sun.jna的一些问题_Java_Android_Java Native Interface_Jna - Fatal编程技术网

Java JNI Android studio和com.sun.jna的一些问题

Java JNI Android studio和com.sun.jna的一些问题,java,android,java-native-interface,jna,Java,Android,Java Native Interface,Jna,我是Android编程的初学者。我的第一项任务是通过安卓studio将iOS应用程序移植到安卓系统 为了解决这个问题,我必须使用我们的.so库,它是在c++上编写的。有一种方法将下一个参数作为输入:char**data(例如,bool get_some(char**data)) 我已经阅读了jna提供的PointerByReference。我通过dependencies->add->library Dependency安装了jna(我还尝试用其他方式添加jna) 主要问题是:我可以使用jna中的

我是Android编程的初学者。我的第一项任务是通过安卓studio将iOS应用程序移植到安卓系统

为了解决这个问题,我必须使用我们的.so库,它是在c++上编写的。有一种方法将下一个参数作为输入:char**data(例如,
bool get_some(char**data)

我已经阅读了jna提供的PointerByReference。我通过dependencies->add->library Dependency安装了jna(我还尝试用其他方式添加jna)

主要问题是:我可以使用jna中的类(Android studio成功地将包导入代码),但当我尝试使用这些包中的某些内容时,我的应用程序崩溃

例如,应用程序的字符串类似于
PointerByReference pointer=new PointerByReference()将与报告一起崩溃:

jnidispatch (/com/sun/jna/linux-amd64/libjnidispatch.so) not found in resource path". 
(我尝试在genymotion emulator上运行我的应用程序)

jar文件中存在
/com/sun/jna/linux-amd64/libjnidispatch.so

我研究过这个

但我解决不了这个问题!顺便说一句,使用Eclipse时,我没有这样的问题。他从jar文件下载了libjnidispatch.dll

最后。如何避免/解决问题


<>我的操作系统是Windows 10,Android Studio,SDK是最新版本。

如果你的代码是C++,你可能想尝试其他的解决方案而不是JNA……@ Samuel Audet i选择JNA,因为在桌面版的iOS应用程序<代码> REF INTPTR < /C> >代替了CHAR**。那么,你能建议我用什么来代替JNA呢?你的Java代码需要做什么?
bool get_some(字符**数据)
的输出是什么?在不知道这一点的情况下,提出解决方案并不容易。
char**
通常意味着一个C字符串数组(在内存中,是几个连续的指针)。它有时意味着被调用函数将在提供的内存位置写入
char*
类型的指针。如果是前者,您可以传入Java
String[]
。在部署到Android时,您需要按照说明在应用程序中部署本机共享库。您将无法动态地从JAR文件解包,它有特殊的安装要求。如果您的代码是C++,您可能想尝试其他解决方案而不是JNA…@ Samuel Audet i选择JNA,因为在iOS应用程序的桌面版本<代码> REF ItPTR < /代码>中,而不是CHAR**。那么,你能建议我用什么来代替JNA呢?你的Java代码需要做什么?
bool get_some(字符**数据)
的输出是什么?在不知道这一点的情况下,提出解决方案并不容易。
char**
通常意味着一个C字符串数组(在内存中,是几个连续的指针)。它有时意味着被调用函数将在提供的内存位置写入
char*
类型的指针。如果是前者,您可以传入Java
String[]
。在部署到Android时,您需要按照说明在应用程序中部署本机共享库。您将无法从jar文件中动态解包它,因为它有特殊的安装要求。