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

时间:2013-11-06 23:56:49

标签: linux eclipse libusb-1.0 java.library.path hidapi

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

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

现在我想在Ubuntu上做同样的事情。使用相同的Java hidapi,现在将使用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和C版本hidapi库的Linux libhidapi-jni.so都正确安装/生成,并在运行时小C程序,系统能够找到共享的libusb-1.0.so库,而没有明确提到libsub-1.0的位置(这是有意义的,因为libusb-1.0安装在系统加载器将始终搜索的地方)。

所以我去了日食。我导入eclipse工作空间,将Java hidapi添加到构建路径(就像我在Windows中所做的那样),将Linux的C版hidapi库(.so文件)移动到名为'lib'的文件夹中(其中.dll版本)本地图书馆也驻留)。我通过“构建路径”将本机库设置为“lib” - > “配置构建路径” - > “libraries”标签 - > “本土图书馆位置”。所以到目前为止,两个本地库是:/ usr / lib / i386-linux-gnu下的libusb-1.0,以及'eclipse workspace is'/ 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的位置。

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

  1. 保留它们所在的两个库,添加vm参数(运行 - >运行配置 - >参数 - > VM参数): - Djava.library.path =“$ {workspace_loc:project_name} / lib; / usr / lib / i386-linux-gnu“。它给出了:”java.lang.UnsatisfiedLinkError:在java.library.path中没有usb-1.0“在A行。
  2. 撤消1.将libsub-1.0.so移动到'eclipse workspace is'/ lib的所在位置,所以现在两个.so文件在一起。将.jar的本机库位置设置为此文件夹。它在B行给出了“java.lang.UnsatisfiedLinkError:blablabla:undefined symbol:libusb_control_transfer”。所以我认为它创建了libusb库,但是符号(应该在libusb中)仍然没有得到解决。这真的很奇怪。
  3. 任何人都可以帮助我吗?提前谢谢。

0 个答案:

没有答案