`
脑壳冒星星
  • 浏览: 16275 次
文章分类
社区版块
存档分类
最新评论

使用Javah 生成C/C++头文件

阅读更多
假设我们已经有了这个类jni_test,准备用它生成调用C语言的头文件。另外,这个Java文件是在路径“D:\workspace\PrepareForExam\scr”下,包“package com.example.myclass;”

package com.example.myclass;
public class jni_test {
    private native final void init();
    private native final void init2(int a,int b);
}


1、首先我们要编译一下这个类,以便得到类对应的*.class
2、我们要开始写javah的命令,以便生成对应的C语言头文件

cd D:\workspace\PrepareForExam\src
javah -classpath D:\workspace\PrepareForExam\bin -d d:/ -jni com.example.myclass.jni_test

其中java中各个命令的意思是
-classpath <路径> 用于装入类的路径
-d <目录> 输出目录
-jni 生成 JNI样式的头文件(默认)

注意到以上我们命令中指定的路径

注意到我们的命令符的执行位置是源代码目录”D:\workspace\PrepareForExam\src”

-classpath  后面的路径是指包”com.example.myclass”所在的根路径

-jni 后面的路径是包名+类名

3、最终输出的C语言头文件

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_example_myclass_jni_test */

#ifndef _Included_com_example_myclass_jni_test
#define _Included_com_example_myclass_jni_test
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_example_myclass_jni_test
 * Method:    init
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_com_example_myclass_jni_1test_init
  (JNIEnv *, jobject);

/*
 * Class:     com_example_myclass_jni_test
 * Method:    init2
 * Signature: (II)V
 */
JNIEXPORT void JNICALL Java_com_example_myclass_jni_1test_init2
  (JNIEnv *, jobject, jint, jint);

#ifdef __cplusplus
}
#endif
#endif


分享到:
评论

相关推荐

    android NDK 自动生成jni头文件

    Android NDK 提供了一個工具 javah,可以将 Java 代码中的 JNI 方法转换为 C/C++ 头文件,以便进行 JNI 的 C/C++ 端程序的开发。 javah 命令是 Android NDK 中的一个重要工具,主要用于将 Java 代码中的 JNI 方法...

    mac 下jni编译代码

    3. 使用javah生成C/C++头文件。 4. 实现C/C++源代码中的本地方法。 5. 使用Clang编译并链接生成动态库。 6. 配置Java程序找到库的路径。 以上就是在Mac下使用JNI编译代码的详细过程,希望能对你在Java与C/C++交互...

    JNI创建java对象

    2. 使用javah生成C/C++头文件。 3. 实现C/C++源文件中的本地方法,包括查找和调用Java类、构造方法等。 4. 编译C/C++代码为本地库。 5. 在Android项目中配置NDK构建系统,将本地库打包进APK。 6. 在Java代码中加载...

    java写的一个使用jni调用c/c++的dll

    接着,我们需要使用`javah`工具生成JNI头文件,这个头文件定义了Java `native`方法在C/C++中的原型。例如: ```java public class JniTest { public native void callCppFunction(); static { System....

    JNI DEMO:java jni技术 调用 c/c++ 的dll

    然后,使用`javah`工具,根据Java类生成相应的C/C++头文件。在C/C++代码中,我们会实现这些函数,它们将与DLL文件中的函数相对应。 接下来,我们需要创建一个C/C++源文件,包含之前由`javah`生成的头文件,并实现...

    Java 调用C/C++程序

    2. 使用`javah`命令生成对应的C/C++头文件。 3. 编写C/C++源代码,实现头文件中的函数原型,使用JNI函数进行Java对象和数据类型的转换。 4. 编译C/C++源代码为动态链接库。 5. 在Java程序中使用`System.loadLibrary...

    android调用C/C++

    - 使用`javah`工具(在Android Studio中通常是`makefile`或者`gradle`插件)生成对应的C/C++头文件,这个头文件包含了Java本地方法的原型。 3. **编写C/C++代码**: - 根据生成的头文件,实现本地方法的C/C++代码...

    java调用C/C++过程

    3. **生成JNI头文件**:使用JDK的`javah`工具,根据Java类生成对应的C/C++头文件和实现文件。例如: ```bash javah -jni HelloWorld ``` 这会产生一个`HelloWorld.h`文件,包含了`sayHello`方法的C/C++原型。 4. **...

    使用C/C++实现Java的Native方法接口(JNI)/ JNI编程(C/C++) 代码实例

    使用`javah`工具,根据Java类生成C/C++的头文件,这个文件包含了Java方法在C/C++中的原型: ``` javah -jni JNICBridge ``` 会生成`JNICBridge.h`,其中包含了`JNIEXPORT`和` JNICALL`等宏定义的函数原型。 5....

    简单jni实例调用第三方.so库

    这个过程包括:定义Java的native方法、使用javah生成C/C++头文件、编写C/C++实现、编译生成.so库以及在Java代码中加载和调用本地方法。通过这种方式,开发者可以充分利用C/C++的性能优势,同时保留Java的跨平台特性...

    使用JNI进行混合编程:在Java中调用C/C++本地库

    - 使用`javah`工具生成C/C++的头文件。在命令行中,输入 `javah -jni Sample1` 将根据Sample1.class生成Sample1.h。 2. **C/C++端的实现**: - 打开Sample1.h,可以看到Java方法签名已经转换成了C/C++函数原型。...

    JNI开发之javah生成静态和非静态的两个头文件区别代码

    在JNI开发中,我们常常需要通过`javah`工具来生成C或C++的头文件,这些头文件定义了Java层与本地层交互的函数原型。`javah`工具可以从已编译的Java类中提取方法签名,生成对应的C/C++函数原型。 在`javah`命令中,...

    java调用C/C++的例子

    4. **编译JNI代码**:说明如何使用javah工具生成C/C++的头文件,以及如何使用C/C++编译器编译生成动态链接库(如.so或.dll文件)。 5. **加载库和调用函数**:解释如何在Java代码中加载动态链接库,并调用其中的方法...

    Android Studio JNI调用.so 库

    3. 使用javah生成C/C++头文件。 4. 实现C/C++源文件中的native方法。 5. 配置build.gradle文件进行编译和链接。 通过这个过程,开发者可以充分利用JNI来增强Android应用的功能,实现高效的本地代码执行。在实际项目...

    jni java调用c/c++

    在本例中,我们将详细介绍如何使用 JNI 将 Java 代码与 C/C++ 代码集成,生成动态库,并加载到 Java 程序中。 JNI 概述 JNI 提供了一种机制,允许 Java 代码调用 native 代码,反之亦然。JNI 提供了两种方式来实现...

    JNI基础实验一:调用.so文件--友善之臂Tiny210 android 串口/pwm/ADC/LED

    2. 使用javah生成C/C++头文件。 3. 实现C/C++代码,包括初始化JNI环境,找到对应的硬件接口,如GPIO、PWM、ADC。 4. 编译本地库,生成.so文件。 5. 将.so文件添加到Android项目的jniLibs目录。 6. 在Java代码中加载...

    java怎么调用C语言

    使用`javah`工具可以自动生成C/C++头文件,这个头文件包含了与Java方法相对应的JNI函数原型。例如,`javah TestDLL`将生成`TestDLL.h`文件。 ##### 3. 编写C/C++实现 根据生成的头文件,我们可以在C/C++中实现这些...

    ndk源码基于eclipse开发c/c++/java

    - 使用`native`关键字声明方法,并使用`javah`命令生成对应的C/C++头文件。 - 在C/C++代码中实现这些方法,例如,`JNIEXPORT void JNICALL Java_package_class_method(JNIEnv *env, jobject obj)`。 6. **构建和...

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

    `javah`工具就是Java SDK提供的一种命令行工具,用于生成C或C++的头文件,使得我们可以为Java类编写本地方法。然而,在实际操作中,我们可能会遇到一些常见错误。下面我们将详细讨论这些错误及其解决方法。 1. **...

    AndroidStudio 编译C/C++文件生成SO文件

    通过`javah`工具(在Android Studio中可以使用`Generate JNI Header`功能),我们可以自动生成对应的头文件,然后在C/C++代码中实现这些函数。 总结来说,Android Studio支持C/C++开发主要依赖于NDK,通过配置`...

Global site tag (gtag.js) - Google Analytics