JNI使用java生成*.h文件

   最近在做jni相关的东西,使用jni要生成.h头文件,这个可以自动生成,也可以自己手动写。不过相信大家都喜欢自动生成,因为自己如果写的不好的话可能出现各种问题。记录下我正确生成.h头文件的步骤。
    1.在Eclipse中新建一个Jni的项目 ,我的项目名称是:TestJNI
    2.编写调用本地函数的对象(ps:本地函数是指C或C++或其它语言的函数),例如我的是:

package cn.test.jni; public class TestJNI { static { System.loadLibrary("hellojni.so") ; } public static native String test() ; }

   3.编写调用这个对象的对象,我的是:

package cn.test.jni; public class Invoke { public String getTestJni(){ return TestJNI.test() ; } }

 4.使用javah命令生成.h头文件(ps:javah命令要装好jdk并且正确配置环境变量,具体可以百度),打开Dos命令窗口:切换到当前工程目录, 下面的命令是重点:
首先进入到你的项目里cd  项目路径   (cd C:\Users\zhangshiting\Desktop\WORK\gggg

OK, 之后会在当前项目的classes目录下生成cn_test_jni_TestJNI.h 的头文件。


注意事项:

当这样写时,会报


所以javah命令必须是进入你所需要生成.h文件类的目录之后使用。




转载至:http://xj179.blog.163.com/blog/static/76041084201241435945228/

调用本地动态库(*.dll文件)可以通过Java中的JNIJava Native Interface)技术实现。这里简单介绍一下如何使用JNI调用本地动态库。 1. 编写本地动态库 使用C/C++编写动态库,生成*.dll文件。 2. 定义Java本地接口 在Java中定义本地接口,声明要调用的本地方法。例如: ``` public class MyLib { static { System.loadLibrary("mylib"); // 加载本地动态库 } public native int add(int a, int b); // 声明本地方法 } ``` 3. 生成文件 使用JavaJavah命令生成文件,用于在本地代码中实现Java本地接口的方法。 ``` javah -jni MyLib ``` 生成的头文件类似于:MyLib.h。 4. 实现本地方法 在本地代码中实现Java本地接口的方法,即实现MyLib.h中声明的方法。例如: ``` #include "MyLib.h" JNIEXPORT jint JNICALL Java_MyLib_add(JNIEnv* env, jobject obj, jint a, jint b) { return a + b; } ``` 5. 编译本地动态库 使用C/C++编译器编译本地代码,生成*.dll文件。例如: ``` gcc -shared -I"path/to/java/include" -I"path/to/java/include/win32" MyLib.c -o mylib.dll ``` 6. 调用本地方法Java中调用本地方法,例如: ``` MyLib lib = new MyLib(); int result = lib.add(1, 2); ``` 以上就是使用JNI调用本地动态库的基本流程。需要注意的是,本地动态库的命名需要与加载时的名称一致。在Windows下,需要将*.dll文件放置到Java运行时环境的路径中,或者使用System.loadLibrary()方法指定动态库的路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值