zoukankan      html  css  js  c++  java
  • Java通过jna调用c++动态库

    1 环境准备

    操作系统:windows 10,x64

    jna,jna-4.4.0.jar

    c++开发环境,vc2013

    java开发环境,eclipse,jdk8

    2 dll开发

    通过vc2013创建动态库(dll)工程项目JnaTestDll,编写需要导出的函数定义及实现,如下:

    JnaTestDll.h

    #ifdef JNATESTDLL_EXPORTS

    #define JNATESTDLL_API __declspec(dllexport)

    #else

    #define JNATESTDLL_API __declspec(dllimport)

    #endif

     

    extern "C" JNATESTDLL_API int Add(int a, int b);

    extern "C" JNATESTDLL_API int Sub(int a, int b);

    JnaTestDll.cpp

    #include "stdafx.h"

    #include "JnaTestDll.h"

     

     

    // 这是导出函数的一个示例。

    extern "C" JNATESTDLL_API int Add(int a, int b)

    {

        return a + b;

    }

     

    extern "C" JNATESTDLL_API int Sub(int a, int b)

    {

        return a - b;

    }

    配置环境选择Release x64

     

    编译生成JnaTestDll.dll。

    3 java调用dll

    使用eclipse创建java应用工程项目,build path引入jna-4.4.0.jar。

    将JnaTestDll.dll拷到java工程根目录(和src同一目录)。

    编写接口类JnaTestDll

    package com.kld.jnatest;

     

    import com.sun.jna.Library;

    import com.sun.jna.Native;

     

    public interface JnaTestDll  extends Library

    {

          JnaTestDll INSTANCE = (JnaTestDll)Native.loadLibrary("JnaTestDll", JnaTestDll.class);

          public int Add(int a, int b);

          public int Sub(int a, int b);

    }

    main函数中调用

    int add = JnaTestDll.INSTANCE.Add(2, 1);

    int sub = JnaTestDll.INSTANCE.Sub(2, 1);

    System.out.println("Add(2,1) = " + add);

    System.out.println("Sub(2,1) = " + sub);

    输出结果如下所示:

     

  • 相关阅读:
    mysql 数据列按照逗号转成行
    powder designer 转数据库
    oracle 写入txt
    ORACLE 11g dblink 配置升级
    oracle 11g dblink配置
    spring ,mybatis多数据源
    基于shamir门限的秘密分存
    SM4加解密
    PHP对数据库的简单操作
    php实现计算器
  • 原文地址:https://www.cnblogs.com/aurain/p/9878025.html
Copyright © 2011-2022 走看看