Java经过jna调用c++动态库

1 环境准备java

操做系统:windows 10,x64c++

jna,jna-4.4.0.jarwindows

c++开发环境,vc2013eclipse

java开发环境,eclipse,jdk8函数

2 dll开发ui

经过vc2013建立动态库(dll)工程项目JnaTestDll,编写须要导出的函数定义及实现,以下:操作系统

JnaTestDll.hblog

#ifdef JNATESTDLL_EXPORTS接口

#define JNATESTDLL_API __declspec(dllexport)ip

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

输出结果以下所示:

 

相关文章
相关标签/搜索