JNI初探一(windows平台开发)

本文介绍了Java通过JNI调用C函数的实现步骤。先在Java源文件中声明native函数,通过javac和javah生成.class和.h文件,依据.h文件实现.c文件并编译成.dll。还给出了运行示例,最后提出将Java类放到package里的后续思考。

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

首先,在java源文件中把我们需要声明类中的函数为native,例如:

sam4java.java

public class Sam4java
{
    public Sam4java(){
    }

    public native int intMethod(int n);
}

然后

javac sam4java.java,生成了sam4java.class;

javah sam4java,生成了sam4java.h

生成的c函数原形

JNIEXPORT jint JNICALL Java_sam4java_intMethod(JNIEnv *, jobject, jint);

注意:这个函数原形包含了3部分,(1)Java固定前缀 (2)sam4java类名 (3)iniMethod函数名

参数就不在这里讨论,以后补充.

根据生成的sam4java.h,自己实现sam4java.c文件,编译成功后就可以获得sam4java.dll

应为没有放到package里,所以运行时很简单,不需要考虑目录结构,把所有文件拷贝到同一个目录即可。

给sam4java.java增加main函数,如下:

 public static void main(String[] args)
 {
  System.out.println("load lib sam4java start ......");

  System.loadLibrary("sam4java");

  System.out.println("load lib sam4java completed.");

  Sam4java sam4java = new Sam4java();

  int     square = sam4java.intMethod(5);

  System.out.println("intMethod: " + square);

}

最后,重新编译 javac sam4java.java

运行 java sam4java

如果我们把sam4java放到package com.me.test里,我们又该怎么办呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值