Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.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 为Libftd3xx编写JNA包装器_Java_Android_Android Studio_Jna - Fatal编程技术网

Java 为Libftd3xx编写JNA包装器

Java 为Libftd3xx编写JNA包装器,java,android,android-studio,jna,Java,Android,Android Studio,Jna,我目前正在尝试为Libftd3xx(一个用于FTDI芯片的包装器)编写一个包装器。不幸的是,我以前从未这样做过,需要你们的帮助来正确设置 我已经设法从我的Android Studio应用程序中调用了本机代码。此外,我还成功地在我的Windows10机器上编译了FTDI驱动程序,生成了文件“libftd3xx.so”。现在我想使用JNA调用FTDI驱动程序 JNA网站包括以下内容: 使目标库可用于Java程序。有 有几种方法可以做到这一点: 首选方法是将jna.library.path系统属性设置

我目前正在尝试为Libftd3xx(一个用于FTDI芯片的包装器)编写一个包装器。不幸的是,我以前从未这样做过,需要你们的帮助来正确设置

我已经设法从我的Android Studio应用程序中调用了本机代码。此外,我还成功地在我的Windows10机器上编译了FTDI驱动程序,生成了文件“libftd3xx.so”。现在我想使用JNA调用FTDI驱动程序

JNA网站包括以下内容:

使目标库可用于Java程序。有 有几种方法可以做到这一点:

首选方法是将jna.library.path系统属性设置为目标库的路径。这个属性是相似的 指向java.library.path,但仅适用于JNA加载的库

[……]

现在我不知道如何从这里开始。如何使用Android Studio设置jna.library.path的路径?一旦我这样做了,我将如何继续调用预编译的驱动程序


非常感谢你的帮助。非常感谢。

它正在寻找一个系统环境变量,类似于以下内容:。至于第二部分,您将编写一个接口,使用Native.loadLibrary()引用.so文件,并编写方法签名以匹配库并将Java类映射到本机参数。非常感谢您的评论。我了解到我可以使用System.setProperty(“jna.library.path”、“path/to/libftd3xx.so”)设置相应的路径。这是正确的方法吗?这是一种方法(尽管只包括路径/to/part而不是.so文件)。有很多。从操作系统设置
路径
的方式更为“永久”。您可以使用
-Djna.library.path=
从命令行(或在IDE中)启动java。或者,您也可以使用
System.setProperty()
从程序内部执行此操作。如果您这样做,您必须在您的程序中的任何其他地方使用JNA之前这样做,因为它是初始化的一部分,并且如果您已经初始化了JNA,它将不起作用。您也可以只在
Native.loadLibrary()
命令中放置一个绝对路径。很抱歉回复太晚。我最终使用Native.loadLibrary()加载了库。我花了一段时间才弄明白,我必须将相应的.so文件放在“jniLibs”文件夹中,如前所述。不幸的是,现在每当我试图从我的库实例调用任何函数时,我都会出现错误“在资源路径(.)中找不到本机库(com/sun/jna/android-aarch64/libjnidispatch.so)”。我建议您在这一点上向jna邮件列表提问。你会有更多的观众。