JNI方面的笔记(未完待续)

Microsoft Windows [版本 6.1.7600]

版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\toto>javah

用法:javah [选项] <>

其中 [选项包括:

        -help                 输出此帮助消息并退出

        -classpath <路径>     用于装入类的路径

        -bootclasspath <路径用于装入引导类的路径

        -d <目录>             输出目录

        -o <文件>             输出文件(只能使用 -d 

        -jni                  生成 JNI样式的头文件(默

        -version              输出版本信息

        -verbose              启用详细输出

        -force                始终写入输出文件

使用全限定名称指定 <>(例

如,java.lang.Object)。

C:\Users\toto>cd F:\android\TestNativeCode\bin

C:\Users\toto>F:

F:\android\TestNativeCode\bin>javah cn.itcast.TestNati

F:\android\TestNativeCode\bin>

 

 

 

一个例子:

package cn.itcast;

public class TestNative {
 /**
  * 通过jdk目录下的javah.exe工具生成c/c++的头文件
  *
  * 1、进入命令行。
  * 用法:javah [选项] <类>
     *    其中 [选项] 包括:

     *   -help                 输出此帮助消息并退出
     *   -classpath <路径>     用于装入类的路径
     *  -bootclasspath <路径> 用于装入引导类的路径
     *  -d <目录>             输出目录
     *  -o <文件>             输出文件(只能使用 -d 或 -o 中的一个)
     *  -jni                  生成 JNI样式的头文件(默认)
     *  -version              输出版本信息
     *  -verbose              启用详细输出
     *  -force                始终写入输出文件
     * 
     *  2、找到TestNative.class文件,我的是存在:F:\android\TestNativeCode\bin\cn\itcast\TestNative.class
  *
  *  3、通过如下的:
  *  C:\Users\toto>cd F:\android\TestNativeCode\bin
     *
     *C:\Users\toto>F:
     *
     *F:\android\TestNativeCode\bin>javah cn.itcast.TestNative
  *通过这些命令就可以在F:\android\TestNativeCode\bin目录下生成一个cn_itcast_TestNative.h文件了,如下:。
  *
  ** DO NOT EDIT THIS FILE - it is machine generated *//*
  * #include <jni.h>
  * // Header for class cn_itcast_TestNative
  * 
  * #ifndef _Included_cn_itcast_TestNative
  * #define _Included_cn_itcast_TestNative
  * #ifdef __cplusplus
  * extern "C" {
  * #endif
  *
  * Class:     cn_itcast_TestNative
  * Method:    sayHello
  * Signature: ()V
  *Java_包名_方法名。
  *
  *JNIEXPORT void JNICALL Java_cn_itcast_TestNative_sayHello
  * (JNIEnv *, jobject);
  *
  *#ifdef __cplusplus
  * }
  *#endif
  * #endif*/

 public native void sayHello();
 
 
 
 public static void main(String[] args) {
  
 }
}

 

 

第二个例子:

package democalldll;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2010</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

public class DemoCallDLLApp {

  static{
    System.loadLibrary("test");
  }

  private native int showMsgBox_native(String str);

  public int showMsgBox(String str){
    return showMsgBox_native(str);
  }

  public DemoCallDLLApp() {
  }

  public static void main(String[] args) {
    DemoCallDLLApp demoCallDLLApp1 = new DemoCallDLLApp();
    demoCallDLLApp1.showMsgBox("Call showMsgBox_native Successfully!");
  }
}

 

你可能感兴趣的:(JNI方面的笔记(未完待续))