Javah在JNI 生成 C文件时用的语法

      最近的项目比较忙,JNI那边的自学就放下了一个月,没想到这一放,以前的细节就都忘了,放在博客里以后常温习..      在Eclipse中使用javah ,我是添加一个自定义的builder的,然后一运行builder,生成的jni文件生成了。我把这个builder起名为:Javah_Builder须要注意的点是:

       1、这个Builder放在Java_Builder之后,(builder顺序在第四位,在CDTbuilder之前)原因是 javah 是要根据Java_Builder 生成的java的class文件才能生成 jni的接口的。

       2、重点是这个Javah_Builder的Arguments ,这几乎是javah的语法,但是不常配的话很容易忘啊,我举自己JniDemo1的例子,把它贴出来:

-verbose 
-d ${workspace_loc:/JniDemo1/jni}
-classpath ${workspace_loc:/JniDemo1/bin} 

            我以前肯定是懂过,但现在完全忘了...一点一点找回来:(待序)


首先我在bash中运行 javah 命令来生成 头文件,我的class文件在  /JniSpace/BubbleJniDemo/bin/com/wzydemo/bubblejnidemo/MainAct.class 这个位置

首先我在bash中进入/JniSpace/BubbleJniDemo/bin ,然后输入 sh  ~/general.sh  (我的general.sh 放在了这个用户的根文件夹下)

 general.sh中的命令是:

${JAVA_HOME}/bin/javah  -classpath . com.wzydemo.bubblejnidemo.MainAct


然后,就在  /JniSpace/BubbleJniDemo/bin/ 中生成了com_wzydemo_bubblejnidemo_MainAct.h 文件  ,绝对注意的是-classpath后边的.,前后都有一个空格!
---------
    但是我想在这个工程的jni文件夹中生成 刚才这个头文件而不是在bin文件夹中,于是命令修改成


#注意我的命令行 这时仍在/JniSpace/BubbleDemo/bin

${JAVA_HOME}/bin/javah -d jni -classpath . com.wzydemo.bubblejnidemo.Main



  于是我在bin文件夹下一级子目录里发现jni文件夹而且有生成的头文件。但是随后我退出bin文件夹 进入到/JniSpace/BubbleJniDemo 之后再运行 general.sh,发现找不到com.wzydemo.bubbledemo.MainAct 类(我本来试图在工程一级子目录下建立jni文件夹即像Android的jni文件夹那个位置似的),期间还有报:Error无法为输出创建目录/JniSpace/BubbleDemo/jni  很无语,看来我只能手动把生成的.h文件 放入到 工程一级子目录中的jni文件夹了。 


还是那句话,现实是很骨感的,没有能完全实现自己想实现的功能,但是可以用了。


javah的 -d 即目的文件夹功能,还是不太会用目录






参考:

         http://cowboy.1988.blog.163.com/blog/static/75105798201227103213419/  
       http://blog.knowsky.com/261204.htm


 我喜欢这种通俗的方式
           


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值