Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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
Linux 在Ubuntu上的eclipse中链接本机hidapi和libusb-1.0库_Linux_Eclipse_Libusb 1.0_Java.library.path_Hidapi - Fatal编程技术网

Linux 在Ubuntu上的eclipse中链接本机hidapi和libusb-1.0库

Linux 在Ubuntu上的eclipse中链接本机hidapi和libusb-1.0库,linux,eclipse,libusb-1.0,java.library.path,hidapi,Linux,Eclipse,Libusb 1.0,Java.library.path,Hidapi,我是Ubuntu新手,在网上搜索了两天,尝试了很多解决方案,但还没有任何运气。如果有人能帮上忙,我将不胜感激 我在Windows上用eclipse用Java编写了一个程序。我的程序使用Java hidapi库,它是C版本hidapi库(.dll)的Java包装器。在eclipse中,通过将JavaHIDAPI添加到构建路径并将C hidapi设置为本机库,一切正常 现在我想在Ubuntu上做同样的事情。使用相同的JavaHIDAPI,现在将使用Linux的C版本hidapi库(一个.so文件)。

我是Ubuntu新手,在网上搜索了两天,尝试了很多解决方案,但还没有任何运气。如果有人能帮上忙,我将不胜感激

我在Windows上用eclipse用Java编写了一个程序。我的程序使用Java hidapi库,它是C版本hidapi库(.dll)的Java包装器。在eclipse中,通过将JavaHIDAPI添加到构建路径并将C hidapi设置为本机库,一切正常

现在我想在Ubuntu上做同样的事情。使用相同的JavaHIDAPI,现在将使用Linux的C版本hidapi库(一个.so文件)。在为Linux制作C版本的hidapi库时,我需要另一个名为libusb-1.0的库(hidapi需要它来处理低级通信)。因此,我安装了libusb-1.0(现在我在/usr/lib/i386 linux-gnu下有一个libusb-1.0.So文件),为linux制作了C版本的hidapi库。我有一个小的C程序,我在bash下测试它,它可以工作,所以我相信直到现在,所有的东西,libsub-1.0.so和Linux libhidapi-jni.so的C版本hidapi库都安装/生成正确,运行小型C程序时,系统能够找到共享的libusb-1.0.so库,而无需明确说明libsub-1.0的位置(这很有意义,因为libusb-1.0安装在系统加载程序将始终搜索的位置)

所以我去看日食。我导入eclipse工作空间,将Java hidapi添加到构建路径(就像我在Windows中所做的那样),将Linux的C版本hidapi库(即.so文件)移动到一个名为“lib”的文件夹中(本机库的.dll版本也位于该文件夹中)。我通过“构建路径”->“配置构建路径”->“库”选项卡->“本机库位置”将本机库设置为“lib”。因此,到目前为止,这两个本机库是:/usr/lib/i386 linux gnu下的libusb-1.0和/lib下的hidapi.So。最后,我在源代码中添加了两行:

System.loadLibrary(“usb-1.0”);//这条线叫A

System.loadLibrary(“hidapi jni”);//请拨打B线

我将该程序作为Java应用程序运行。它在A行报告“java.lang.UnsatisfiedLinkError:java.library.path中没有usb-1.0”。因此我猜java运行时无法找到libsub-1.0的位置

为了澄清,我已经做了以下试验,但没有一个有效

  • 保留两个库,添加vm参数(运行->运行配置->参数->vm参数):-Djava.library.path=“${workspace\u loc:project\u name}/lib; /usr/lib/i386 linux gnu”。它在A行给出:“java.lang.unsatifiedlinkerror:java.library.path中没有usb-1.0”
  • 撤消1。将libsub-1.0.so移动到'where eclipse workspace'/lib,这样两个.so文件就在一起了。将.jar的本机库位置设置为此文件夹。它在B行给出了“java.lang.UnsatifiedLinkError:BlablaBlaBlaBla:undefined symbol:libusb_control_transfer”。因此我认为它找到了libusb库,但符号(应该在libusb中)仍然没有解析。这真的很奇怪
  • 有人能帮我吗?提前谢谢