详细的步骤可以参考官方链接 https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html
这里只记录一下自己在实践的过程中遇到的问题。
1、编译java文件时的一些细节:
首先生成class文件时,不需要使用含包名的全名,只需指出该文件的位置即可 例如 javac com/ten/mm/HelloJni.java
2、使用java 和javah 运行和生成c头文件时需要使用包含包名的全名, 如java com.ten.mm.HelloJni javah com.ten.mm.HelloJni,因为这两个命令是对类作用的,不像上面的是对文件。
3、编译成库文件,将javah生成的c或cpp文件生成动态库时,可以用cygwin或MinGW,使用Cygwin没成功,使用MinGW挺顺利的。但是在运行的时候出现Can't load IA 32-bit .dll on a AMD 64-bit platform。原因是编译出来的库是32位的,而我装的java是64位的。改成32位的java就可以了,也可以用MinGW-w64试试