首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java JNA UnsatisfiedLinkError

Java JNA UnsatisfiedLinkError
EN

Stack Overflow用户
提问于 2015-08-03 07:58:05
回答 1查看 3.3K关注 0票数 2

我正在学习本教程:http://stuf.ro/calling-c-code-from-java-using-jna。区别在于我的类名为main.c,而不是ctest.c。我在项目文件夹中创建了一个库,就像它说的那样。在接下来的步骤中,我创建了修改了这一行的Java文件:

代码语言:javascript
复制
CTest ctest = (CTest) Native.loadLibrary("ctest", CTest.class);

代码语言:javascript
复制
CTest ctest = (CTest) Native.loadLibrary("main", CTest.class);

我已经将jna-4.1.0.jar导入到我的项目中。在运行时,它会给出以下错误:

代码语言:javascript
复制
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文件?

EN

回答 1

Stack Overflow用户

发布于 2015-08-03 10:25:25

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

库的位置在类的javadoc中进行了描述。

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

代码语言:javascript
复制
System.setProperty("jna.debug_load", "true"));
CTest ctest = (CTest) Native.loadLibrary("ctest", CTest.class);

编辑

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

代码语言:javascript
复制
java -classpath jna.jar:. -Djna.library.path=/your/path/to/the/libctest/file HelloWorld
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31782185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档