javah

本文详细介绍了javah工具的使用,包括如何将Java native函数转换为C头文件和源代码,讲解了C代码如何操控Java对象,函数命名规则,以及生成选项如-o和-d的含义。javah生成的头文件和源代码方便开发者编写JNI风格的代码,而JNI本身并不需要这些文件,但它们有助于开发过程。文中还提供了具体案例及命令行参数的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 说明

    • 功能

      • javahnative函数转换生成c头文件和源代码.
    • C

      • 可以用C代码(native source code)控制对象实例.
      • 入参一般是Env环境信息(全局函数等),object对象,即类的实例.
    • .h中结构体

      • 如果存在,则对应类的结构.
      • struct字段对应类的字段.
    • 函数名字

      • Java_${package_name}_${function_name}.
    • 生成源代码

      • -stubs生成,-o则将结果汇总到一个文件.
    • JNI:Java Native Interface

      • 本身不需要头文件和源代码.只需要so.
      • 但是生成出来方便开发者进行开发JNI风格的代码.
      • 默认仅仅生成头文件.
  2. 格式

    • 完整

      • javah [ options ] fully-qualified-class-name ...
    • [options]

      • 可选参数.
    • fully-qualified-class-name

      • 将要被转化成c头文件或源代码类的完整类名.
      • ${package_name}.${class_name}比如java.util.lang.String.
      • 注意:没有.java后缀名.
      • 编译路径一般在最顶层.即包含package_name的目录.
      • 参考链接
    • 案例

      • 文件:/home/user/com/example/JavaHowTo.class
      • 包:com.example.JavaHowTo
      • 编译位置:/home/user
  3. 选项

    • -o output_file

      • 将生成的所有头文件或源代码拼接到一个输出文件.
      • -o,-d只能用一个,本身是冲突的.
    • -d directory

      • 将生成的头文件和源代码输出到一个文件夹.
      • -d,-o只能用一个.
    • -stubs

      • 生成C代码.
    • -verbose

      • 输出生成文件的信息到stdout.
    • -jni

      • 生成JNI格式的函数,默认.
      • 所以这个选项可选.
    • -classpath path

      • 指定查找给定class的位置.
      • 不指定用环境变量CLASSPATH.即-classpath > CLASSPATH
      • path格式是:分割,windows;分割.
      • path特殊,*表示.jar|.JAR结尾.
    • -bootclaspath

      • 加载引导类的路径.一般是jre/lib/rt.jar和几个其他JAR文件。
    • -force

      • 总是写入,而不是存在就不生成.
  4. 参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值