JNI QuickStart,Java调用C++实现

本文详述了如何在Java中通过JNI调用本地C方法。从创建Java本地方法类,到使用javap生成C头文件,再到VS中实现并生成DLL,最后在Java中调用DLL中的方法,步骤清晰,适合初学者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,构建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

 

转载于:https://www.cnblogs.com/m160331/p/9760371.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值