2009-09-02 90 views
2

我有一个Java应用程序,它必须加载一个具有一些依赖关系的DLL。我将所有需要的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'设置为什么,并且所有库都在该路径上。 – 2009-09-02 15:48:48

+0

您是否在启动应用程序时指定了java库路径? – 2009-09-02 15:54:13

+0

我设置这条线到Eclipse VM参数字段: -Djava.library.path = $ {workspace_loc}/bin_dbg/HeadTrackerDLL 还我试图 -Djava.library.path = $ {workspace_loc}/bin_dbg 但没有用。 – sn3ek 2009-09-02 16:06:45

回答

2

所以我想我解决了我的问题与mt.exe工具。

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

通过此代码行清单文件和dll文件将被打包到dll文件,因此所有的依赖位于。

我的应用程序正在运行。我希望这是解决方案。