项目中有需要使用java调用c++或c的某些已经写好的方法,这时需要c++或c生成dll文件,java使用jna的方式进行调用。
1.引入jna相关依赖
<dependency>
<groupId>com.sun.jna</groupId>
<artifactId>jna</artifactId>
<version>3.0.9</version>
</dependency>
2.代码
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
/**
* @Author: yang.fu.ren
* @Date:
* @Description:
*/
public class DecryptUtil{
/**
* 声明解密的接口以及对应的方法
*/
public interface CLibrary extends Library {
// DLL文件默认路径为项目根目录,若DLL文件存放在项目外,请使用绝对路径。(此处:(Platform.isWindows()?"DatEnDe":"c")指本地动态库DatEnDe.dll)
CLibrary INSTANCE = (CLibrary) Native.loadLibrary((Platform.isWindows() ? System.getProperty("user.dir") + "\\src\\main\\resources\\DatEnDe" : System.getProperty("user.dir") + "\\src\\main\\resources\\libDatEnDe"),
CLibrary.class);
// 声明将要调用的DLL中的方法,可以是多个方法(此处示例调用本地动态库DatEnDe.dll中的printf()方法)
int DataDeCrypt(byte[] byteArr, int length);
}