【JNA】JAVA调用JNA

使用JNA调用C/C++动态链接库dll

参考视频:

GITHUB repository:

准备

  • 下载JNA和JNA Platform。

image-20220407232739677

image-20220407232838933

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

image-20220407233022480

  • VScode安装JAVA扩展

    • Extension Pack for JAVA(好像是6合1)

    • JAVA Development Kit

      • 下载java
      • 把下载的java添加到系统变量(2处)image-20220409003946283image-20220409004015114image-20220409004036112
    • cmd 运行java -version

    • vscode 在工作区设置setting.jsonimage-20220409004207504

    • 检验

      public class hello {
          public static void main(String[] args){
              System.out.println("Hello World!");
          }
      }
      

      image-20220409004329142

  • 上面介绍了用vscode安装java插件,接下来介绍eclipse,嘻嘻,专业的东西用专业的IDE。vscode,太难了。


JNA的应用

在Windows中的Preferences中选择Build Path下的User Libraryimage-20220409154252057

添加之前在github下载的三个文件。image-20220409154331254

之后在文件夹image-20220409154433644,右键点击Build Path下面的Add Library选中我们添加的JNA。


按住ctrl+click你想看到的函数源码,之后点击attach...的button,添加之前在github下载的zip文件,就可以看到源码了。image-20220409154852563

image-20220409155025815


在vs studio中创建dllimage-20220409155357236

主要使用的是testDLL.h和testDLL.cpp文件,相关的API和example在文件中已经给出。image-20220409155555133

在testDLL.cpp中写源文件,在testDLL.h定义image-20220409160649433

image-20220409160702579

extern “C”是为了避免重载。

生成解决方案:

image-20220409160738670

在DeBug文件下面找到testDLL.dllimage-20220409160934107


把dll文件放到image-20220409161300374


新建接口interface;

实例化interface:Mydll mydll = (Mydll)Native.load("testDLL",Mydll.class);

其中“testDLL”是testDLL.dll

image-20220409164128527


jna数据类型对应。 JNA数据类型的对应以及使用_江南老画船的博客image-20220409164322035

真正的应用

好了好了,不隐藏了,上面都是老子踩的坑,接下来才是正题。

资料【C++】JAVA使用JNA调用C++动态库DLL_哔哩哔哩_bilibili


  • 下载IntelliJ IDEA

  • 把debug改成releaseimage-20220410001545149

  • 如果想要输出中文,要使用u8image-20220410001739776

  • 添加jna的库image-20220410001816284

  • 添加interface并且实例化image-20220410001856274

  • 调用image-20220410001930152

posted @ 2023-06-03 22:18  cccopy  阅读(165)  评论(0)    收藏  举报