Java利用JNI就可以调用C++的类库(dll文件),例子如下:
一、利用C++生成dll类库
1、打开VS2008,新建Win32 项目,工程名称“MyDll”,确定后,在“应用程序类型”中选择“DLL”,单击完成
2、在MyDll工程的头文件中新建MyDll.h 代码如下:
extern "C" _declspec(dllexport) int Max(int a,int b);
extern "C" _declspec(dllexport) int Min(int a,int b);
3、修改源文件中的MyDll.cpp文件
// MyDll.cpp : 定义 DLL 应用程序的导出函数。
#include "stdafx.h"
#include "MyDll.h"
int Max(int a,int b) {
if(a>=b)
return a;
else
return b;
}
int Min(int a,int b) {
if(a>=b)
return b;
else
return a;
}
4、使用Release编译,生成MyDll.dll
二、新建一个java工程:testDll
1、下载jna.jar,并将其导入到工程的Library当中(jna下载地址:https://github.com/twall/jna)
2、在工程的src目录中新建一个package:com.wyf,在其中新建一个类testC
package com.wyf;
import com.sun.jna.Library;
import com.sun.jna.Native;
public class testC {
public interface MyDll extends Library {//这个接口是dll与java程序的“连接”
MyDll INSTANCE = (MyDll)Native.loadLibrary("MyDll", MyDll.class);
int Max(int a, int b);//把用到的dll中的函数声明一下,用不到的就不用写了
}
public static void main(String[] args) {
int a = MyDll.INSTANCE.Max(3, 5);
System.out.println("最大数为" + a);
}
}
3、将第一步生成的MyDll.dll拷贝到testDll的工程目录中(MyDll.dll在MyDll工程目录的Release目录下)。
4、在testC上右键,Run As-Java Application,控制台会输出:最大数为5
本文参考: