gpt4 book ai didi

linux - 无法在 Ubuntu 上的 Eclipse 中从 Java 加载 so 文件

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:10 30 4
gpt4 key购买 nike

我有一些代码尝试加载 C 库,如下所示:-

public ThreadAffinity() {
ctest = (CTest) Native.loadLibrary("ctest", CTest.class);
}

但是在尝试构建项目时出现以下错误;我得到的错误如下:-

UnsatisfiedLinkError: Unable to load library 'libctest': liblibctest.so: cannot open shared object file: No such file or directory
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:166)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:239)
at com.sun.jna.Library$Handler.<init>(Library.java:140)
at com.sun.jna.Native.loadLibrary(Native.java:393)
at com.sun.jna.Native.loadLibrary(Native.java:378)
at com.threads.ThreadAffinity.<init>(ThreadAffinity.java:11)
at com.threads.ThreadAffinity.main(ThreadAffinity.java:45)

当前工作目录是项目的根目录,也是so文件所在的目录。我还尝试修改 LD_PRELOAD 变量以指向我的 so 文件;但是错误仍然存​​在。

它在我的 OSX 上工作得很好,dylib 正好位于 so 文件当前所在的位置(项目根目录)。我做错了什么?

最佳答案

来自异常:

UnsatisfiedLinkError: Unable to load library 'libctest': liblibctest.so: cannot open shared object file: No such file or directory

这意味着你使用了类似的东西:

public ThreadAffinity() {
ctest = (CTest) Native.loadLibrary("libctest", CTest.class);
}

而不是:

public ThreadAffinity() {
ctest = (CTest) Native.loadLibrary("ctest", CTest.class);
}

因此您看到 JNA 添加了 lib 的前缀和 .so 的后缀添加到 libctest (liblibctest.so)

关于linux - 无法在 Ubuntu 上的 Eclipse 中从 Java 加载 so 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19150381/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com