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

简介: Microsoft Windows [版本 6.1.7600]版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\Users\toto>javah用法:javah [选项] <类>其中 [选项] 包括:        -help                 输出此帮助消息并退出        -classpath 

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!");
  }
}

 

目录
相关文章
|
3月前
|
存储 编译器 程序员
QT源码学习 | 编译器知识点
本文是关于QT源码学习中编译器知识点的总结,包括`__declspec`、`Q_FUNC_INFO`、`__assume`、`__attribute__`、`__ASSEMBLER__`、`QT_SUPPORTS`和`QT_WARNING_DISABLE_MSVC`等宏定义的使用和作用,以及相关参考链接。
QT源码学习 | 编译器知识点
vc入门宝典十二(调用其它程序)
vc入门宝典十二(调用其它程序)
|
Linux API C++
[笔记]c/cpp跨平台开发 知识点
[笔记]c/cpp跨平台开发 知识点
|
缓存 Java 编译器
JNI基础简介
JNI系列入门连载,开启JNI学习之旅吧。
111 0
|
Android开发
AndroidStudio 前言中不允许有内容
AndroidStudio 前言中不允许有内容
504 0
|
算法 Java Linux
NDK 系列(5):JNI 从入门到实践,万字爆肝详解!(上)
NDK 系列(5):JNI 从入门到实践,万字爆肝详解!
595 0
NDK 系列(5):JNI 从入门到实践,万字爆肝详解!(上)
|
存储 缓存 安全
NDK 系列(5):JNI 从入门到实践,万字爆肝详解!(下)
NDK 系列(5):JNI 从入门到实践,万字爆肝详解!(下)
268 0
NDK 系列(5):JNI 从入门到实践,万字爆肝详解!(下)
|
存储 缓存 Java
NDK | C 语言复习笔记
NDK | C 语言复习笔记
88 0
NDK | C 语言复习笔记
|
Java 编译器 C语言
NDK | C++ 复习笔记
NDK | C++ 复习笔记
103 0