Java JNA 未满足链接错误

标签 java

我正在关注本教程:http://stuf.ro/calling-c-code-from-java-using-jna 。不同之处在于我的类名为 main.c 而不是 ctest.c。我已经在项目文件夹中创建了一个库,正如它所说的那样。在下一步中,我创建了 Java 文件,并修改了这一行:

CTest ctest = (CTest) Native.loadLibrary("ctest", CTest.class);

CTest ctest = (CTest) Native.loadLibrary("main", CTest.class);

我已将 jna-4.1.0.jar 导入到我的项目中。运行时它给了我这个错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'main': Native library (win32-x86-64/main.dll) not found in resource path ([file:/D:/eclipse/workspace/RXTX/bin/, file:/D:/eclipse/workspace/RXTX/lib/RXTXcomm.jar, file:/C:/Users/Angelo/Downloads/jna-4.1.0.jar])
    at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:271)
    at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398)
    at com.sun.jna.Library$Handler.<init>(Library.java:147)
    at com.sun.jna.Native.loadLibrary(Native.java:412)
    at com.sun.jna.Native.loadLibrary(Native.java:391)
    at HelloWorld.main(HelloWorld.java:9)

我应该在哪里放置 main.c 以及如何处理 libctest.so 文件?

最佳答案

如果你建立一个库libctest.so那么你需要用 CTest ctest = (CTest) Native.loadLibrary("ctest", CTest.class); 加载它(假设您的其余设置正确)。

javadoc of the class Native 中描述了库的放置位置.

要获得一些提示,您可以将 JNA 库搜索的步骤打印到控制台。

System.setProperty("jna.debug_load", "true"));
CTest ctest = (CTest) Native.loadLibrary("ctest", CTest.class);

编辑

如何调用类(修改类路径和目录名)

java -classpath jna.jar:. -Djna.library.path=/your/path/to/the/libctest/file HelloWorld

关于Java JNA 未满足链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31782185/

相关文章:

java - 我想制作一个 recyclerview,将数据显示到 SQLITE 数据库中的新 Activity

java - 用数组中的数据填充一些 JTable 列

java - java二维数组中的单词搜索

java - 如何解码来自 TCP 套接字的数据

java - 如何解析 Location.distanceBetween 方法的结果?

java - 来自 url 的文本,但它被复制了 3 到 4 次

java - PDF框2.0 : invisible lines on rotated page - clip path issue

java - vaadin,尝试将项目添加到 sqlContainer 时获取空指针

java - 使用 executeupdate 从 mysql 数据库中删除记录(netbeans)

java - Spring JMS 监听器容器未完全停止