可以参考http://java.sun.com/docs/books/tutorial/native1.1/stepbystep/index.html
不过你调用的dll是编译好的,不再修改了,那么再写一个dll去调用它,
然后用jni调用新的dll,可以参考thinking in java 附录A 使用非JAVA代码:
A.1.6 使用现成代码
为实现JNI固有方法,最简单的方法就是在一个Java类里编写固有方法的原型,编译那个类,再通过javah运行.class文件。但假若我们已有一个大型的、早已存在的代码库,而且想从Java里调用它们,此时又该如何是好呢?不可将DLL中的所有函数更名,使其符合JNI命名规则,这种方案是不可行的。最好的方法是在原来的代码库“外面”写一个封装DLL。Java代码会调用新DLL里的函数,后者再调用原始的DLL函数。这个方法并非仅仅是一种解决方案;大多数情况下,我们甚至必须这样做,因为必须面向对象引用调用JNI函数,否则无法使用它们。