JAVA JNI Demo

说明:VC++6.0在虚拟机内运行,Eclipse在win7系统下运行,所以导致截图不一样(传了几次,截图都没上传成功,汗)

主要步骤:

1、创建java类,生成.h文件,供 .cpp 文件调用

2、.h文件在VC++6.0内的存放位置,以及调用jni.h的环境的配置

3、cpp文件的创建和dll的生成

4、生成dll文件在Eclipse中环境的配置



1、在eclipse项目中新建一个TestHello.java,创建Java类TestHello .java

public class TestHello {
     public native  void hello();
     static{
         System.loadLibrary("hello");
    }
    public static void main(String []args){
        new TestHello().hello();
    }
}
 

2、在命令行内输入 javacTestHello .java 编译生成TestHello .class文件。

      在命令行下使用javah TestHello 命令,生成TestHello .h头文件(就是jni代理stub的接口)。

3、  vc生成dll文件的过程:  

文件-->新建-->工程选项卡--》win32 Dynamic-Link Library,在工程名称中输入名称例如:hello,点确定--》一个空的DLL工程(E)--》完成--》确定。

在弹出的窗口中创建一个空的DLL工程,点击Finish。 

打开项目所在的文件目录,将步骤2中生成的TestHello .h文件复制到Include文件夹下:

 

在VC的菜单上选择Tools-Options…,打开选项对话框。在Directories文件夹,添加上jdk所在文件夹下的include和include/win32文件夹。


接着再点击文件--》新建--》文件选项卡:C++ Source File--》输入文件名:例如hello,确定进入hello.cpp编辑窗口,代码如下:

#include <jni.h>
#include "TestHello.h"
#include <stdio.h>
 JNIEXPORT void JNICALL Java_TestHello_hello(JNIEnv *env,jobject obj)
 {
     printf("success!!\n");
 }

点击VC上的菜单项Build,生成hello.dll。


运行成功后,hello.dll存放在VC项目Debug文件夹中的



4、将hello.dll复制到任何文件夹下,我放在了bin文件夹下。



然后配置eclipse的buildPath,Native library location,默认为空,点击Edit配置,即找到hello.dll所存放的目录




5、点击run as 运行


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当您在Java程序中需要调用C/C++代码时,可以使用Java Native Interface(JNI)来实现。下面是一个简单的JNI示例,演示了如何将Java方法与C函数相互调用: 1. 创建一个Java类,例如"JNIDemo.java",其中包含您想要调用的本地方法: ```java public class JNIDemo { // 本地方法声明 public native void sayHello(); // 加载本地库 static { System.loadLibrary("jni_demo"); // 加载名为"jni_demo"的本地库 } // 测试 public static void main(String[] args) { JNIDemo demo = new JNIDemo(); demo.sayHello(); // 调用本地方法 } } ``` 2. 在命令行中使用`javac`编译Java类:`javac JNIDemo.java`。 3. 生成C头文件,可以使用`javah`工具:`javah JNIDemo`。这将生成名为"JNIDemo.h"的头文件。 4. 创建一个C源文件,例如"jni_demo.c",实现您在Java中声明的本地方法: ```c #include <stdio.h> #include "JNIDemo.h" JNIEXPORT void JNICALL Java_JNIDemo_sayHello(JNIEnv *env, jobject obj) { printf("Hello from C!\n"); } ``` 5. 在命令行中使用C编译器编译C源文件,并生成共享库文件(DLL或SO): - 对于Windows(使用MinGW):`gcc -shared -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" jni_demo.c -o jni_demo.dll` - 对于Linux/Mac:`gcc -shared -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/linux" jni_demo.c -o libjni_demo.so` 注意:请将`$JAVA_HOME`替换为您Java安装的实际路径。 6. 运行Java程序:`java JNIDemo`。您将看到输出:"Hello from C!"。 这是一个简单的JNI示例,演示了如何在Java和C之间进行方法调用。您可以根据自己的需求扩展和定制此示例。希望对您有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值