导航

Java调用C++类库--JNI

Posted on 2013-04-11 15:26  寒宵飞飞  阅读(335)  评论(0编辑  收藏  举报

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