java通過JNI調用dll,參見firefly的帖子 《JNI 對象的操作》
這裏是一些使用心得。
1.鏈接異常
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jdk1.5.0_08\jre\bin\QueryClientDLL.dll: Can't find dependent libraries
可能是系統找不到需要加載的依賴dll。
使用Dependency Walker
找出所依賴的dll文件。
如果提示缺失dll,就添加該dll到C:\Program Files\Java\jdk1.5.0_08\jre\bin下面。
並且拷貝一份放置到system32目錄下
2.異常處理
java通過jni調用dll的過程中,如果dll中出現了未被捕獲的異常將會導致jvm崩潰。
因此一種比較保守的方法是在dll中儘量把所有異常都捕獲。