java调用c++的动态库(*.dll)

1.JNI

参考:java调用C++的过程 - 疯封风 - 博客园

注意事项:

javah命令:javah的使用 - Jeson2016 - 博客园

java报错:

Exception in thread "main" java.lang.UnsatisfiedLinkError 错误解决记录_u012688704的博客-CSDN博客

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Program Files (x86)\Java\jdk1.8.0_144\bin\Jpcap.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform - 张学涛 - 博客园

Java中调用c/c++语言出现Exception in thread "main" java.lang.UnsatisfiedLinkError: Test.testPrint(Ljava/lang/String;)V...错误 - 猫咪大王 - 博客园

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));
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值