dll动态库生成与调用(1):生成dll动态库、C程序调用动态库
dll动态库生成与调用(2):Java程序利用JNI、JNA调用动态库
文章目录
文章简介
本文主要内容是使用JNA、JNI调用dll动态库。
因为JNI的使用在菜鸟教程中已经有了比较完整的介绍,所以我在本文中就只是提了一下JNI需要注意的事项,菜鸟教程的网址我已经贴在JNI那一章节。JNI教程中使用的是eclipse,如果你使用IDEA,那么你可以看JNA教程中是如何设定库目录的。
开发环境
IDE: Visual Studio 2015、IDEA 2019.1
JNA(Java库): 3.5.2
JDK: 1.8
文件目录结构
C中的JNI_test项目用于生成dll,JNI_test_call是C程序调用dll,JNI_test_java是通过Java程序调用dll。
C:
JNI_test项目中的dll.h、dll.c
用于生成dll动态库文件,JNI_test_call项目中的call.c
用于调用dll库。
注: 如果是VS新手,建议这两个项目不要放在同一个解决方案中,为这两个项目各创建一个解决方案,能避开一些VS使用上的问题。
Java:
一、JNA调用动态库
JNA是JNI的简化版,对于C程序来说,JNA不再需要根据Java代码生成C的头文件,简化了调用流程。不过作为简化版,功能及性能方便自然是有所弱化的,例如JNI可以在C端调用Java端,可以实现双向调用,但是JNA只能用于Java端调C程序的单向调用。如果想了解更多,可以看文末的扩展阅读的第8、9项。
1.Java环境配置
1.配置JDK环境:
需要在官网下载以及配置IDEA中的JDK设置,网上有很多教程,搜一下即可,本文中JDK版本为1.8。
2.加载JNA的Java库:
JNA库(jar包)下载地址为:http://www.java2s.com/Code/JarDownload/jna/
选择你需要的jna版本下载,之后在Java项目中创建一个文件夹用于存放库文件,例如“lib”文件夹,最后将下载的jna库包放入,之后在此库包上右键,添加进库即可,如下图:
之后需要用import
对此库进行引入,代码见下文“Java调用dll动态库”。
关于import的基本知识,可以看文末的 补充阅读第10项 “Java的package和import机制”。
最后的文件目录如图: