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);
输出结果以下所示: