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

  • 相关阅读:
    agc027D
    agc027E
    agc036D
    牛客挑战赛43 D-数组操作
    CF587F. Duff is Mad
    CF578F. Mirror Box
    CF708D. Incorrect Flow
    agc022D
    2020.12.16 模拟赛x+1
    Mybatis Plus——[Could not set property 'id' of '***' with value]解决方案
  • 原文地址:https://www.cnblogs.com/m160331/p/9760371.html
Copyright © 2011-2022 走看看