Java调用C++类库--JNI

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

你可能感兴趣的:(java)