1.JNI
注意事项:
javah命令:javah的使用 - Jeson2016 - 博客园
java报错:
Exception in thread "main" java.lang.UnsatisfiedLinkError 错误解决记录_u012688704的博客-CSDN博客
2.JNA
(1)新建c++空项目
Test.h
#include<stdio.h>
#include<math.h>
#ifndef Test
#define Test
extern "C" _declspec(dllexport) double Add(double A, double B);
#endif
Test.cpp
#include"Test.h"
#include<stdio.h>
#include<math.h>
double Add(double A, double B)
{
return (A + B);
}
(2)生成*.dll
第一步:右击工程,点击属性,选择常规,如下图,点击应用。
第二步:右击工程,点击生成。
(3)新建maven项目
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.7.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/net.java.dev.jna/jna-platform -->
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna-platform</artifactId>
<version>5.6.0</version>
</dependency>
</dependencies>
(4)新建测试类
Test.java
import com.sun.jna.Library;
import com.sun.jna.Native;
public class Test {
public interface CLibrary extends Library {
CLibrary INSTANCE = (CLibrary) Native.loadLibrary("Test",CLibrary.class);
double Add(double A, double B);
}
public static void main(String[] args) {
System.out.println(CLibrary.INSTANCE.Add(3,4));
}
}