次のように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 ファイルが配置されています。また、自分の so ファイルを指すように LD_PRELOAD 変数を変更してみました。ただし、エラーは解決しません。
私のOSXでは、dylibがsoファイルが現在ある場所(プロジェクトルート)に正確に配置されているため、問題なく動作します。私は何を間違っていますか?