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
本文参考:
http://www.cnblogs.com/cpcpc/archive/2012/08/13/2636199.html
http://zhidao.baidu.com/question/350869887.html