1 つのネイティブ ライブラリ libclient.so を使用するアプリケーションがあります。これは別の .so ファイルに依存しています。
Linux 32ビットシステムでコマンドラインを使用してLD_LIBRARY_PATHを設定しようとしました:
export LD_LIBRARY_PATH=/home/usb:${LD_LIBRARY_PATH}
パスを次のように設定しています:
tushar@tushar-desktop:~$ echo $LD_LIBRARY_PATH
/home/usb:/home/tushar/workspace/MinutiaeApp/resources:
しかし、コードを実行しようとすると、LD_LIBRARY_PATH でnullが発生し、そのために Unsatisfied Link Error が発生していると思います。
ここに私のテストコードがあります:
String lib = "libclient.so";
String ld_lib_path = System.getenv("LD_LIBRARY_PATH");
System.out.println("***LD_LIBRARY_PATH ***"+ ld_lib_path); // **GIVING NULL**
String[] paths = ld_lib_path.split(":");
for(int i=0; i<paths.length; i++) {
String p = paths[i];
File x = new File(p, lib);
System.out.println("***Path name *****" + i + " : "+ x.getAbsolutePath());
if (x.exists()) {
System.out.println("Exist");
System.load(x.getAbsolutePath());
break;
}
}
実際のコード:
System.load("/home/usb/libclient.so"); // **HERE I am getting Unsatisfied Link Error**
更新: VM 引数に LD_LIBRARY_PATH を設定しました。Java コードで次の行を実行すると、パス名が取得されます。これでパスが設定されました。
String ld = System.getProperty("LD_LIBRARY_PATH");
問題は、 libgrfingerjava.so をロードしようとすると、System.load("/home/arun/libgrfinger.so")
まだ Unsatisfied Link Error が発生することです。
他の .so ファイルをロードしようとしましたが、それを実行できました。でのみエラーが発生する理由がわかりませんlibgrfingerjava.so
。
Griaule Finger SDK 2009を指読みアプリケーションに統合しています。