2009-09-02 26 views
2

いくつかの依存関係を持つDLLをロードするJavaアプリケーションがあります。必要なDLLをすべて同じフォルダにコピーしました。私が設定したDLLは、SeeingMachine FaceApiライブラリを使用しています。今、私がJavaアプリケーションを起動しているときに、私のDLLが依存関係を見つけることができないというエラーが発生します:Java JNI DLLの依存関係を修正するには

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\[..]\bin_dbg\HeadTrackerDLL.dll: Can't find dependent libraries 
      at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
      at java.lang.ClassLoader.loadLibrary0(Unknown Source) 
      at java.lang.ClassLoader.loadLibrary(Unknown Source) 
      at java.lang.Runtime.loadLibrary0(Unknown Source) 
      at java.lang.System.loadLibrary(Unknown Source) 
      at Tracker.<clinit>(Tracker.java:12) 
      at TrackerControls.<init>(TrackerControls.java:18) 
      at Main.main(Main.java:6) 

どうすれば問題を解決できますか? Dependency Walkerはエラーを表示しないためです。そして、私はすべてのDLLファイルを手動でロードしたくありません。

+0

javaを実行しているコマンドライン/スクリプトを含め、 'library.path'がどのパスに設定されているかを確認し、すべてのライブラリがそのパスにあることを確認してください。 –

+0

アプリを起動したときにJavaライブラリパスを指定しましたか? –

+0

Iは、Eclipse VM引数フィールドにこのラインを設定: -Djava.library.path = $ {workspace_loc}/bin_dbg/HeadTrackerDLL も私が試し -Djava.library.path = $ {workspace_loc}/bin_dbg しかし、何も動作しません。 – sn3ek

答えて

2

だから私はmt.exeツールで私の問題を修正したと思います。

mt.exe -manifest HeadTrackerDLL.dll.intermediate.manifest -outputresource:HeadTrackerDLL.dll; 

このコードラインでは、マニフェストファイルとdllファイルは、すべての依存関係がありますので、dllファイルにパックされます。

アプリケーションが実行されます。私はこれが解決策であることを望みます。

関連する問題