JNI生成C的头文件
最近再给android封装一个C语言的so,以供安卓程序下使用。
再次记录一下,防止以后忘记了。
首先下载安装JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
然后进行环境配置:
我用的是win7系统,步骤为:计算机--属性--高级系统设置--环境变量--系统变量
添加:
变量名 变量值
JAVA_HOME C:\Program Files\Java\jdk1.7.0_09
path C:\Program Files\Java\jdk1.7.0_09\bin
classpath .;C:\Program Files\Java\jdk1.7.0_09\lib\tools.jar;C:\Program Files\Java\jdk1.7.0_09\libdt.jar;C:\Program Files\Java\jdk1.7.0_09\bin
然后点确定,在cmd命令框中输入
javac和javah查看命令是不是成功。


出现以上信息即为成功。
然后写一个java文件,我的是一个test.java文件,包名为com.test
package com.test;
public class test {
public native int[] test();//即要生成的C的函数
}
然后进入文件夹下,先执行>javac com\test\test.java生成class文件

然后在执行:>javah com.test.test后,在该文件下就可以生成com_test_test.h这个头文件

这个头文件内容为:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_test_test */ #ifndef _Included_com_test_test
#define _Included_com_test_test
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_test_test
* Method: test
* Signature: ()[I
*/
JNIEXPORT jintArray JNICALL Java_com_test_test_test
(JNIEnv *, jobject); #ifdef __cplusplus
}
#endif
#endif
这样生成头文件即可完成。
JNI生成C的头文件的更多相关文章
- Android(java)学习笔记260:JNI之native方法头文件的生成
1. JDK1.6 ,进入到工程的bin目录下classes目录下: 使用命令: javah packageName.ClassName 会在当前目录下生成头文件,从头文件找到jni协议方法 下面举 ...
- Android(java)学习笔记204:JNI之native方法头文件的生成
1. JDK1.6 ,进入到工程的bin目录下classes目录下: 使用命令: javah packageName.ClassName 会在当前目录下生成头文件,从头文件找到jni协议方法 下面举 ...
- gcc如何生成预编译头文件(.gch)
1 建立comm.h 2 main.c中包含comm.h : #include "comm.h" 3 gcc -o comm.h.gch comm.h(低版本gcc会有bug) 4 ...
- [JNI开发]使用javah命令生成.h的头文件
第一步:进入对应的.java目录 javac xxx.java 生成对应的xxx.class文件 第二步:退回到/java目录 javah -classpath . -jni 包名.类名
- 使用Javah 生成C/C++头文件
注意:编写java的接口文件. 注意native代码端一定不要有大括号,且要有“:”结尾. public native int add(int x ,int y); 1. 需要让eclipse自动编译 ...
- ubuntu下整合eclipse和javah生成jni头文件开发android的native程序(转)
本文介绍两种利用javah命令生成jni头文件的方法,第一种为大众所知的javah命令,第二种为整合javah到eclipse里面.推荐第二种方式,方便快捷,随时修改随时生成 0:前提和条件: 1:u ...
- 【转】Eclipse中一键调用javah生成jni的头文件
这里定义了一个本地方法jni_test,该方法返回一个String.其中System.loadLibrary是用来加载本地库的(dll或者so). 有了这个类以后,就可以调用javac命令编译,得到E ...
- 一键生成JNI头文件方法二
经常使用java的同学一定都接触过JNI(Java Native Interface)吧.JNI为我们提供了java<---->C/C++之间的接口,使得我们可以在java中调用C程序,以 ...
- Java 生成 JNI 头文件
[参考文章]:javah javac 命令行生成native的方法教程 [参考文章]:用javah 导出类的头文件, 常见的错误及正确的使用方法 项目需要调用 C++动态库,由于项目包结构发生变化,需 ...
随机推荐
- cairo graphics.org
cairographics.org Latest news: 2013-08-26: cairo 1.12.16 snapshot available 2013-02-10: cairo 1.12.1 ...
- linux: /usr/bin/ld: cannot find -lloc
/usr/bin/ld: cannot find -lloc ld链接库的时候没发现loc这个库-lloc本事不是文件名字,要去找这个库就搜索libloc, loc, 不能搜索lloc. /usr1/ ...
- linux 解决Ubuntu编译内核uImage出现问题“mkimage” command not found - U-Boot images will not be built问题
解决Ubuntu编译内核uImage出现问题“mkimage” command not found - U-Boot images will not be built问题 http://www.lin ...
- java layout 表格项增加、删除、修改
实现的内容为:点击表格某项,再点击删除钮,可实现删除点击表格某项,再点击编辑按钮,可实现内容改变点击添加按钮,可实现向表格中添加内容 总结:总的来说中间遇到了很多困难,但是都一步步的解决了. pack ...
- SharePoint 2013 "通知我"简单的功能
简单的功能 "通知我"内部列表或文档库中的主要项目.加入/删除/修改等操作,用户的E- mail通知设定功能:设置列表或文档库通知的能力,有可能设置通知为一个单一的项目.这是Sha ...
- Swift - final关键字的介绍,以及使用场景
final关键字在大多数的编程语言中都存在,表示不允许对其修饰的内容进行继承或者重新操作.Swift中,final关键字可以在class.func和var前修饰. 通常大家都认为使用final可以更好 ...
- Swift - 多线程实现方式(1) - NSThread
1,Swift继续使用Object-C原有的一套线程,包括三种多线程编程技术: (1)NSThread (2)Cocoa NSOperation(NSOperation和NSOperationQueu ...
- 10个优秀的 HTML5 & CSS3 下拉菜单制作教程
下拉菜单是一个非经常见的效果.在站点设计中被广泛使用.通过使用下拉菜单.设计者不仅能够在站点设计中营造出色的视觉吸引力,但也能够为站点提供了一个有效的导航方案.使用 HTML5 和 CSS3 能够更e ...
- 从零开始学C++之异常(一):C语言错误处理方法、C++异常处理方法(throw, try, catch)简介
一.C语言错误处理方法 1.返回值(if … else语句判断错误) 2.errno(linux 系统调用) 3.goto语句(函数内局部跳转) 4.setjmp.longjmp(Do not use ...
- 报错消息写在AT SELECTION-SCREEN OUTPUT和START-OF-SELECTION事件下的区别
今天面试没答上来的问题,其实我是知道的,以前也遇到过.... START-OF-SELECTION下的话会在左下角报错 AT SELECTION-SCREEN OUTPUT消息会弹出框,然后点击就没有 ...