JNA 调用dll

1) vc++ 新建动态链接库工程

2)不适用预编译头

右击项目一配置属性一C/C++一预编译头一不使用预编译头

添加cpp 文件和 .h 头文件

#include "pch.h"
#include "JnaDLL.h"


#include <iostream>

int add(int a, int b) {
    return a + b;
}

int sub(int a, int b) {
    return a - b;
}

int test(const char* c) {
    std::cout << c << std::endl;
    return 0;
}
#pragma once

#ifndef JNA_TEST_H
#define JNA_TEST_H

#ifdef __cplusplus
extern "C"
{
#endif 
	__declspec(dllexport) int add(int a, int b); // 加法
	__declspec(dllexport) int sub(int a, int b); // 减法
	__declspec(dllexport) int test(const char* c); // const char* 类型对应 Java 的 String 类型

#ifdef __cplusplus
}
#endif 
#endif //JNA_TEST_H

3) 生成dll 

使用java调用

package me.giraffetree.jnafunc;

import com.sun.jna.*;
import lombok.Data;

/**
 * @author GiraffeTree
 * @date 2019/10/25
 */
public class Hello2 {

    public interface JnaLibrary extends Library {

        // JNA 为 dll 名称
        JnaLibrary INSTANCE = Native.load("add", JnaLibrary.class);

        int add(int a, int b);//加法

        int sub(int a, int b);//减法

        int test(String c);//字符串
    }


    public static void main(String[] args) {
        testMax();

    }



    public static void testMax() {
        int max = JnaLibrary.INSTANCE.add(100, 200);
        // out: 200
        System.out.println(max);
    }



}

 

代码已上传, java 和 c++

https://download.csdn.net/download/hongyawx/88009048

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值