背景介绍
项目中用到第三方设备发送短信,设备方提供的是C++语言API,提供windows下32位的xxx.dll的sdk,经过了解,JNA可以实现像调用本地方法一样的调用其它语言的方法,选择使用了JNA。
springboot项目接入JNA的流程
项目使用的springboot版本是1.5.9.RELEASE
1.pom文件引入JNA jar包
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.5.0</version>
</dependency>
2.自定义接口继承StdCallLibrary,将sdk中的方法暴露出来
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.win32.StdCallLibrary;
public interface xxx extends StdCallLibrary {
//初始化加载
XxxLibrary INSTANCE = Native.load("native/libzz_net.dll", SmsCatLibrary.class);
//暴露的方法
int zz_set_cfgfile(String path);
}
3.定义好,可以像实用本地方法一样去调用sdk api中的方法