JNIを使用するJavaプロジェクトに取り組んでいます。JNIは、自分で作成したカスタムライブラリ(mylib.dllなど)を呼び出します。これは、サードパーティのライブラリlibsndfile-1.dllに依存します。
プログラムを実行すると、次のようにクラッシュします
java.lang.UnsatisfiedLinkError: C:\...path...\mylib.dll: Can't find dependent libraries.
私はこのサイト(および他のサイト)を検索し、いくつかの修正を試みました:
依存関係ウォーカーを実行しました。DWは、libsndfileに必要な2つのライブラリ、MPR.DLLとSHLWAPI.DLLに「未解決のインポート」があるという警告をいくつか出しましたが、DW FAQには、これらの警告は安全に無視できると書かれています。
ここで提案されているように、mylib.dllのメソッド名を修正しました。メソッド名はコンパイラによってなんらかの形で壊されていましたが、リンカーフラグを追加したところ、dllメソッド名がjniヘッダーファイルのメソッド名と完全に一致するようになりました。
これらのDLLをすべて同じディレクトリ(それらを呼び出す.jarと同じディレクトリ)に配置して、正しいPATH上にあることを確認します。
サイコロはありません。
誰かが何が起こっているのか分かりますか?
私はMacBookProのVisualStudio2010で(Parallels経由で)開発を行っています。私は東芝のラップトップのWindowsXPでテストを行っています。