• 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

  • 相关阅读:
    忘记mysql的登陆密码该怎么办?
    localhost和127.0.0.1的区别
    什么是DAPP
    System.NullReferenceException:未将对象引用设置到对象的实例,这是一个新鸟,中鸟,老鸟都避不开的错误
    VS2015中常用快捷键的修改推荐
    Win10系统开启IIS服务步骤
    ASP.NET学习路线图
    我眼中的技术地图
    WEBSTORM中html文件运行之后出现乱码的问题解决
    ExtJS新手学习中常见问题
  • 原文地址:https://www.cnblogs.com/king1302217/p/3014576.html
Copyright © 2020-2023  润新知