# 使用JNA调用C/C++动态链接库dll
参考视频:
* [Java使用JNA调用C/C++动态链接库dll_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV16t411A7it/)(不是特别对)
* [【C++】JAVA使用JNA调用C++动态库DLL_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1xU4y1F7Ep?spm_id_from=333.1007.top_right_bar_window_default_collection.content.click)(推荐)
GITHUB repository:
* [java-native-access/jna: Java Native Access (github.com)](https://github.com/java-native-access/jna)
* repository:[Copy2000/JNA_use: 使用JNA调用c++的类和函数 (github.com)](https://github.com/Copy2000/JNA_use)
## 准备
* 下载JNA和JNA Platform。


* 下载Code,可以使用SSH,更加快,但是我使用了VPN了,所以直接下载压缩包。

* VScode安装JAVA扩展
* Extension Pack for JAVA(好像是6合1)
* JAVA Development Kit
* [下载java](https://www.oracle.com/java/technologies/javase-downloads.html)
* 把下载的java添加到系统变量(2处)
* cmd 运行`java -version`
* vscode 在工作区设置setting.json
* 检验
``` java
public class hello {
public static void main(String[] args){
System.out.println("Hello World!");
}
}
```

* 上面介绍了用vscode安装java插件,接下来介绍eclipse,嘻嘻,专业的东西用专业的IDE。vscode,太难了。
* [安装eclipse。](https://www.eclipse.org/downloads/)
* JDK的安装和上面类似。
---------------------
## JNA的应用
在Windows中的Preferences中选择Build Path下的User Library
添加之前在github下载的三个文件。
之后在文件夹,右键点击Build Path下面的Add Library选中我们添加的JNA。
-------------------------
按住ctrl+click你想看到的函数源码,之后点击attach...的button,添加之前在github下载的zip文件,就可以看到源码了。

--------------------
在vs studio中创建dll
主要使用的是testDLL.h和testDLL.cpp文件,相关的API和example在文件中已经给出。
在testDLL.cpp中写源文件,在testDLL.h定义

extern “C”是为了避免重载。
生成解决方案:

在DeBug文件下面找到testDLL.dll
----------------------
把dll文件放到
------------
新建接口interface;
实例化interface:`Mydll mydll = (Mydll)Native.load("testDLL",Mydll.class);`
其中“testDLL”是testDLL.dll

-------------
jna数据类型对应。[ JNA数据类型的对应以及使用_江南老画船的博客](https://blog.csdn.net/hayaqi0504/article/details/83782105)
## 真正的应用
好了好了,不隐藏了,上面都是老子踩的坑,接下来才是正题。
资料[【C++】JAVA使用JNA调用C++动态库DLL_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1xU4y1F7Ep/?spm_id_from=333.788.recommend_more_video.-1)
--------------
* 下载IntelliJ IDEA
* 把debug改成release
* 如果想要输出中文,要使用u8
* 添加jna的库
* 添加interface并且实例化
* 调用