我有一些代码尝试加载 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 文件当前所在的位置(项目根目录)。我究竟做错了什么?