4

UbuntuでNetbeansでJavaを使用しています。私は JNI を使用しており、Linux では ".so" 拡張子を持つ dll をロードしたいと考えています。このコードが機能する理由:

static {
    System.load("/home/user/NetBeansProjects/JD2XX-DLL2/dist/jd2xx.so");
}

しかし、これはそうではありません:

static {
    System.loadLibrary("jd2xx");
}

netbeans で指定された VM オプションを使用して、次のことを行います。

-Djava.library.path="/home/user/NetBeansProjects/JD2XX-DLL2/dist/"

エラーが発生します:

Exception in thread "main" java.lang.UnsatisfiedLinkError: 
  no jd2xx.so in java.library.path

これは、Windowsで機能します。

4

1 に答える 1

8

Unix システムでは、

System.loadLibrary("Foo");

libFoo.soライブラリ検索パスで呼び出されたファイルを探します。

それに応じてファイルの名前を変更します。

対照的に、Windows システムでは、その呼び出しはFoo.dll、ライブラリ検索パスで呼び出されたファイルを探します。

于 2012-04-30T15:56:24.547 に答える