用javah 导出类的头文件的常见错误及正确的使用方法

今天在开发一个android项目的时候,需要用javah命令从android项目生成的CLASS文件中导出JNI的C语言头文件,但是报错了,如下图所示:

图1

图2

首先纠正一下图1中的错误:在windows的cmd窗口下,用cd  F:\...\...这样的命令不能定位到F:\...\...目录下,必须先输入F:,再按enter键,才能进入F:\...\...目录。

对于图2的错误,我参考了这篇文章:http://blog.csdn.net/hejinjing_tom_com/article/details/8125648,但是按照他说的方法还是会报错,如下图:

后来又查了javah命令的使用方法,并且参考了博客:http://www.cnblogs.com/kissazi2/p/3298884.html,终于成功导出了JNI的C语言头文件,如下图:

总结:javah -classpath后面应该是用于装入类的路径,比如我的F:\个人项目\停车管家\车牌识别模块\CarRecognition\CarPlate\bin\classes,而不是前面所说的android
SDK的JAR包路径。-d后面就是我们指定的生成头文件的位置,我这里是f:/,就是在F盘根目录下。

有时候一个小问题会折腾半天,希望我的总结对大家有帮助。

时间: 2024-10-14 09:35:15

用javah 导出类的头文件的常见错误及正确的使用方法的相关文章

OC高效率52:(二)类的头文件中尽量少引用其他头文件

// //  EOCPerson.h //  OC高效率52:类的头文件中尽量少引用其他头文件 // //  Created by Zoujie on 15/10/8. //  Copyright ? 2015年 Zoujie. All rights reserved. // #import <Foundation/Foundation.h> //#import "EOCEmployer.h" @class EOCEmployer;//向前申明该类,将引入头文件的时机尽量延

在类的头文件里尽量少引入其它头文件 &amp;lt;&amp;lt;Effective Objective-C&amp;gt;&amp;gt;

与C 和C++ 一样,Objective-C 也使用"头文件"(header file) 与"实现文件"(implementation file)来区隔代码.用Objective-C 语言编写"类"(class)的标准方式为:以类名做文件名称,分别创建两个文件,头文件后缀用.h,实现文件后缀用.m. 创建好一个类之后,其代码看上去例如以下所看到的: // EOCPerson.h #import <Foundation/Foundation.

在类的头文件中尽量少引入其他头文件 &lt;&lt;Effective Objective-C&gt;&gt;

与C 和C++ 一样,Objective-C 也使用"头文件"(header file) 与"实现文件"(implementation file)来区隔代码.用Objective-C 语言编写"类"(class)的标准方式为:以类名做文件名,分别创建两个文件,头文件后缀用.h,实现文件后缀用.m.创建好一个类之后,其代码看上去如下所示: // EOCPerson.h #import <Foundation/Foundation.h>

C++ 类的头文件、实现、使用

再次吐槽下C++Primer这本书,啰哩啰嗦,废话太多.如果我来翻译的话,绝对删减一堆没用的---仅限于发牢骚. 不知道是否经典的做法 类中的成员声明在头文件中,定义(我更喜欢叫实现)在源文件中,使用的时候导入头文件即可. 但是,这里没有说明的是,源文件中需要导入头文件,而头文件不需要导入源文件!!! 至于为什么这样的导入能够成功执行,我猜应该是编译器的功劳了--但是书上没有说明. 代码如下: // Person类的头文件,声明类的各成员 #ifndef PERSON_H #define PER

.m文件导入C++头文件带来的错误

这几天的工作挖了不少的坑,遇到了各种千奇百怪的错误,现在好好总结一下. 新建一个工程,然后新建HelloCPP.h,HelloCPP.cpp文件,HelloCPP.h文件内容如下: #ifndef __CPPWrong__HelloCPP__ #define __CPPWrong__HelloCPP__ //#include <stdio.h> namespace hello { }; #endif /* defined(__CPPWrong__HelloCPP__) 就一个空的namespa

NDK编译c包含C++头文件 error: unknown type name &#39;class&#39; 的解决方法

在进行native开发的时候,难免会遇到C文件包含C++头文件而调用C++函数,若没做什么处理,直接include进行编译的话,会遇到以下错误: error: unknown type name 'class' error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 那么怎么解决呢? 首先,找下报错的原,从C以及C++特性不难发现:C文件include了带有C++关键字的头文件,如class等,因此,包含C

【转】Android NDK学习(3)使用Javah命令生成JNI头文件 .

第一步: 在Eclipse中创建android项目,并声明Native接口: public native int add (int a, int b);public native int sub (int a, int b); 编译.运行: 这样在bin目录下就会生成类文件: 第二步: 打开命令行cmd,到达bin目录: F:\fww\workspace\TestJNI\bin> 输入如下命令: F:\fww\workspace\TestJNI\bin>javah -d header -cla

linux中如何使用javah命令生成jni头文件

平台:瑞芯的rk3288 SDK:5.1 作者:fulinux 笔记用内容,可能不全 *****本文允许转载,不过请注明出处:http://blog.csdn.net/fulinus**** java程序 rk3288/frameworks/base/media/java/android/media/MediaScanner.java 文件中class 为public class MediaScanner 正常编译后会在rk3288/out/target/common/obj/JAVA_LIBR

第2条:在类的头文件中尽量少引入其他头文件

@class (向前声明) #import 注意:如果在各自头文件中引入对方的头文件,则会导致“循环引用 ”. 虽然#import(而非#inculde指令)不会导致死循环,但却意味着两个类里有一个无法被正确编译.