今天我想写一个JNI的demo给一个同事看,就是一个简单的打印helloworld的小程序。C的动态库和JAVA程序编译的时候都没有报错,运行的结果却出错了。
Exception in thread "main" java.lang.UnsatisfiedLinkError: HelloWorld.functest()V
at HelloWorld.functest(Native Method)
at HelloWorld.main(HelloWorld.java:12)
百度这个错误信息,有的人说是动态库位置不对,有的是说什么函数名没对应,但我检查都发现没问题。后来我发现是问题可以说是在于我,也可以说是Mircosoft Visual Studio这个软件不够智能:
我直接把.c和.h的源文件在其他地方创建并修改之后拖进VS的界面
所以它就会找不到HelloWorld.h这个文件(原因在于#include加双引号表示从当前目录下去寻找文件)
后来我在VS里新建头文件和源文件就OK 了