ISSUE: 我在使用JNI时碰到java.lang.UnsatisfiedLinkError的解决方法

在使用JNI时遇到`java.lang.UnsatisfiedLinkError`,这是很常见的。 1. 首先检查dll有没有放到相应路径,比较保险的路径是JRE安装目录的bin文件夹,这个路径是必然检索到的。 2. 其次检查dll所需要的dll是否齐全,你自己用JNI调用的dll有可能调用了其他若干个dll,这些dll都要放到JRE/bin目录中去。 3. g++编译时使用的32位还是64位编译方式要正确,如果你的JRE是64位的,你很难能够顺利使用32位编译出来的dll,大部分底层dll都是32位的,虽然现在操作系统大多是64位的,如果你用JNI的话,还是建议你JRE用32位的吧。 4. g++编译时必须要加`-Wl,--kill-at`参数,取消编译出来的函数的带@符号,这样才能顺利的被JAVA调用。 5. cpp代码中,被JAVA调用的函数名要随JAVA包名同步改变,我就经常JAVA代码里面改动了使用JNI的Class的包名,忘记改CPP中头文件的函数名定义,导致用JNI死活调用不了,能折腾好久才想起来函数名要跟包名类名同步对应。