一键生成JNI头文件方法二

常常使用java的同窗必定都接触过JNI(Java Native Interface)吧。JNI为咱们提供了java<---->C/C++之间的接口,使得咱们能够在java中调用C程序,以便实现一些计算复杂度较高的程序(如图像处理、信号处理等)。另外,也方便咱们使用不少优秀的C库。java

使用javah生成本地方法头文件

JNI怎么使用在这里我就不介绍了。今天主要来讲一下JNI的本地方法头文件如何生成,以及怎么方便地在eclipse中一键生成。当你使用JNI时,须要在你的java程序中声明一个类,而且用native关键字来代表该类中的方法是使用本地方法(通常是C/C++)实现的。好比下面给出了一个简单的例子:android

package com.jni.test;eclipse

public class Example {工具

 public native String jni_test();
 
 static {
  System.loadLibrary("Example");
 }
}spa

 

这里定义了一个本地方法jni_test,该方法返回一个String。其中System.loadLibrary是用来加载本地库的(dll或者so)。命令行

 

有了这个类之后,就能够调用javac命令编译,获得Example.class文件,而后就能够使用编译好的.class文件生成文件了。日志

 

在java中,提供了javah这个命令来生成本地方法的头文件。使用命令以下:接口

 

javah -classpath A -d B -jni Cip

 

其中,A是你的.class文件的路径,这样java就能够搜索到这个.class文件。B是将要生成的头文件的存放目录,能够根据须要指定。C是java类名,在这个例子中就是com.jni.test.Example。而后就能够在B目录下看到生成的头文件了。开发

 

 在eclipse中一键调用javah自动生成文件

 

但是,这样不是有些麻烦吗???

可不是嘛,有了.class后还要在命令行里敲入javah那一串命令,对刚刚在eclipse中定义了本地方法的开发者来讲显得过于繁琐了。若是可以在eclipse中定义好本地方法后,直接生成相应的头文件,那该多方便啊。别急,我这里就介绍一个方法。

首先在eclipse中点击下图图标的下拉菜单

而后点击External Tools Configurations

会弹出下面的页面,而后在那3个地方分别填入下图中的命令

其实,这里的操做就是把javah这个可执行程序当作外部工具引入eclipse中来了。调用的时候,eclipse就会执行javah,而且使用预设的arguments,即:

javah -classpath .;./classes -d "${project_loc} -jni ${java_type_name}"

能够看到,.class文件的搜索目录是当前工做目录和子目录classes(android开发时生成的.class是在classes这个子目录中,因此这里也加了这个目录,若是你不搞android开发,那不加这个目录也不要紧)。当前工做目录就是上面设好的${project_loc}/bin,也就是你这个java工程的bin文件夹。这样javah就能够在该目录下找到本地方法的.class文件。-d "${project_loc}"是为了让生成好的.h头文件直接被放置在java工程目录下,便于后续操做。 最后的${java_type_name}是动态的参数,你在生成.h头文件以前先在eclipse中选中本地方法那个java文件,这样java_type_name就自动变成了这个本地方法的名字。

设置好之后,咱们来试着生成一下头文件,先在eclipse中选中刚刚定义好的本地方法Example.java,而后点击下图中的位置来调用javah这个外部工具,就能够自动生成文件了(须要在当前工程中刷新一下才能看到)。

这样设置好之后,未来各位同窗在须要生成文件时,只需写好本地方法的java类,而后鼠标点击一下就可以自动生成文件了,是否是很方便啊。

这篇日志就到这里,咱们下文再见~~~

相关文章
相关标签/搜索