私は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のVisualStudio 2010で(Parallels経由で)開発を行っています。私は東芝のラップトップ上のWindowsXPでテストを行っています。