1

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を指読みアプリケーションに統合しています。

4

2 に答える 2

1

LD_LIBRARY_PATH を設定したのと同じ端末からこのプログラムを実行してみてください。

于 2013-07-26T10:19:55.920 に答える
1

プログラムを同じシェルで実行していますか?

LD_LIBRARY_PATH を設定しているのと同じシェルでアプリケーションを実行する必要があります。「ウィンドウ コンソール」で環境を変更し、Eclipse または別のウィンドウでプログラムを実行している場合は機能しません。

アップデート

Eclipse を使用している場合は、メニューで [プロジェクト] --> [プロパティ] --> [実行/デバッグ設定] に移動し、使用している構成を選択して編集すると、次のウィンドウが表示されます。

ここに画像の説明を入力

「環境」タブを選択し、「新規」をクリックすると、あとは何をすればよいかがわかります。

于 2013-07-26T10:12:17.343 に答える