zoukankan      html  css  js  c++  java
  • JNI QuickStart,Java调用C++实现

    一,构建Java本地方法类,声明native方法,编译

    类文件:MyTest1.java

    package com.merrick.test;
    
    class MyTest1 {
        
        public native int addnumber1(int a, int b);
        
        static{
            
            //System.
            System.loadLibrary("jnidll1");//必须省略后缀.dll
        }
        
        public static void main(String args[])
        {
            
            int res = new MyTest1().addnumber1(1234,234);
            System.out.println(res);
        }
    }


    编译类文件生成class文件:>javac -verbose -d . MyTest1.java

    二,javap生成JNI样式的C头文件

    生成头文件:>javah MyTest1

    头文件:com_merrick_test_MyTest1.h

    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class com_merrick_test_MyTest1 */
    
    #ifndef _Included_com_merrick_test_MyTest1
    #define _Included_com_merrick_test_MyTest1
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     com_merrick_test_MyTest1
     * Method:    addnumber1
     * Signature: (II)I
     */
    JNIEXPORT jint JNICALL Java_com_merrick_test_MyTest1_addnumber1
      (JNIEnv *, jobject, jint, jint);
    
    #ifdef __cplusplus
    }
    #endif
    #endif

    三,在VS中新建win32 dll项目

    项目名称jnidll1

    四,复制生成的JNI样式.h文件至win32 dll项目文件夹

     dll项目添加既有项:com_merrick_test_MyTest1.h

    五,实现.h文件中的native方法

     jnidll1.cpp

    // jnidll1.cpp : 定义 DLL 应用程序的导出函数。
    //
    
    #include "stdafx.h"
    
    #include "com_merrick_test_MyTest1.h"
    
    JNIEXPORT jint JNICALL Java_com_merrick_test_MyTest1_addnumber1
    (JNIEnv *env, jobject obj, jint a, jint b){
        return a+b;
    };

    六,生成dll:jnidll1.dll

    七,在java代码中调用DLL中的native方法,测试

    复制jnidll1.dll至java程序主目录

    测试java调用:>java com.merrick.test.MyTest1

    输出:>1468

  • 相关阅读:
    学习 WCF (6)学习调用WCF服务的各种方法
    WCF 基础简介
    Ext.form 表单为什么第二次就不正常显示
    面向对象
    学习 WCF (4)学会使用配置文件
    临危不乱,.Net+IIS环境经常出现的问题及排障。
    Java调用wcf
    Extjs 动态生成表格
    面向对象分析与设计的意义是什么
    WCF配置文件详解
  • 原文地址:https://www.cnblogs.com/m160331/p/9760371.html
Copyright © 2011-2022 走看看