关于Linux下使用gcc编译动态库.so文件在上一篇已经介绍过,现在来讲讲如何在windows平台下。前面很多步骤都跟在linux环境下一样,javah生成头文件,建立java程序。区别就是,现在在windows环境下,我用eclipse开发java,用vs2015编译动态库。
步骤1:eclipse下建立java工程,使用的native方法接受两个整型参数。
步骤2,生成本地方法头文件
步骤3,在vs 2015建立一个动态链接库工程,在源代码中头文件字目录下将步骤2生成代码拷贝到新建的头文件中,并在源码子目录下新建.cpp文件,实现业务。关于env变量的使用在.c文件和.cpp文件是有区别的,这点在linux下的java jni测试那篇比较的最后有提到过。
码这两个文件的时候必定会加载头文件失败,因为你还没有指定jdk/include和jdk/include/win32这两个头文件所在目录。操作:在vs里右键你的项目--属性(property),看到C/C++下的General,截图左上角是你的工程名,右边箭头所指的地方原本是空白的,点击可以添加额外目录,就是在这里把jdk的头文件的目录添上。
步骤4:运行vs,生成dll文件,将dll文件拷贝至你的eclipse的java工程根目录下。刷新下就能看到对应的dll文件,还是强调下,生成的dll名要和你的java代码中loadLibrary的库名一致。运行结果,在控制台看到正确输出。
补充:事实上,对于64位jdk来说,因为vs工程默认生成32位的dll库,这样你生成的dll其实无法在eclipse中使用。如果让vs生成64位的dll文件呢?如下图所示,右键你的vs工程,点击红色椭圆中的配置管理,弹出对话框,将箭头所指的平台由x86换成x64即可。进行这一步之后,别忘了将步骤3中的jdk导入路径工作重复一遍。这样生成的项目目录下多了个x64子目录,在这下面的dll就是你要生成的64dll文件啦。