zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    excel2007灵活计算2个日期之间的工作日
    bat
    eclipse Maven操作出现No compiler is provided in this environment.Perhaps you are running on a JRE rather than a JDK?
    将BeyondCompare设置为TortoiseSVN的扩展比较工具
    python_Excel_xlwt
    Pyqt5_实例1
    Word使用技巧——持续更新
    python_serial
    Pyqt5_Python运用过程中一些问题和技巧
    Pyqt5_QfileDialog
  • 原文地址:https://www.cnblogs.com/king1302217/p/3014576.html
Copyright © 2011-2022 走看看