java通过jni调用C程序

简单JNI例子示例功能:JAVA程序通过调用C语言编写的2个整数相加程序,并把结果返回到JAVA程序中。

步骤:

Step1.用记事本编写以下代码,保存为:Sum.java

代码如下:

public class Sum{ public native int add(int x,int y); //本地方法申明

         static{

                   System.loadLibrary("add"); //当加载类时,伴随加载该库

                  }

         public static void main(String[] args) {

                 System.out.println(new Sum().add(1,2));

         }

}

 

Step2.用命令javac Sum.java编译,保证编译通过,并生成Sum.class文件。

 

Step3.用命令javah Sum 生成Sum.h文件。

内容如下:

/* DO NOT EDIT THIS FILE - it is machine generated */

#include /* Header for class Sum */

#ifndef _Included_Sum

#define _Included_Sum

#ifdef __cplusplus extern "C"

{

 #endif /* * Class: Sum * Method: add * Signature: (II)I */

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

 #ifdef __cplusplus

}

#endif

#endif

 

Step4.用Microsoft Visual C++创建动态连接库,即add.dll文件。

具体方法如下:

1)、打开VC++6.0,文件->新建-> 工程 -> win32 Dynamic-Link Library .在向导中选择空工程.

 2)、文件->新建-> C++ Source File,新建一文件。

该文件内容如下:

 #include "stdio.h"

 #include "Sum.h"

 #include "jni.h"

 JNIEXPORT jint JNICALL Java_Sum_add (JNIEnv *, jobject, jint x, jint y)

 {

      return x+y;

 }

3)细心的读者可能已经注意到,上一个文件中导入了其它的头文件,像jni.h,Sum.h ,所以得先导入到VC++才能使用,否则出错。Jni.h这个文件在哪呢?其头就在JDK安装目录下include文件中,例如我本机上的路径是:C:/Program Files/Java/jdk1.6.0_12/include,把include文件下.h结尾的文件和其子目录win32下的2个.h文件全部导入到VC++库内。

Step5、 编译并生成DLL文件,把生成的DLL文件复制到与Sum.java同一目录。

 

Step6、用java Sum命令解释执行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值