zoukankan      html  css  js  c++  java
  • JNI 学习笔记系列(一)

    JNI是Java native interface,也即Java本地应用开发接口。JNI相当于一个中间件,通过它可以使Java和C语言之间互相调用。
    Java语言不能写驱动程序,因为Java的运行是在Java虚拟机上,虚拟机将底层东西屏蔽掉了,Java不能直接在底层运行,所一不能用Java写驱动程序。
    在android开发中有哪些功能的开发需要用到JNI呢?

    1.wifi热点共享,操作手机网卡,把手机网卡的状态设置为混杂模式。
    2.极品飞车,重力引擎,碰撞效果的模拟。
    3.视频音频编解码,可以使用代码库。

    ……

    好了,先来看看C/C++的基础知识。

    一个helloworld程序

    # include<stdio.h>
    # include<stdlib.h>
    main(){
           printf("Hello world ! 
    ");
           system("pause");
           }

    这个程序输出一个简单的输出,结果为 “Hello world !”

    再写一个简单的Java程序HelloJava.java,如下:

    public class HelloJava{
         public static void main(String args[]){
        System.out.println("Hello java and JNI !");
    }
    
    }

    这个Java程序输出一个”Hello java and JNI !”,将HelloJava.java编译,并将编译后的.class文件与上面的.c文件放在同一个文件夹中,这时,可以在C中执行这个.class文件:

    # include<stdio.h>
    # include<stdlib.h>
    main(){
           printf("Hello world ! 
    ");
           //手动执行过java的人都知道,java命令表示执行一个java程序,HelloJava是指HelloJava.class
           system("java HelloJava");
           system("pause");
           }
    

    输出结果为:
    这里写图片描述

    这样就实现了一个简单的在C语言中调用Java的程序,如果这个HelloJava.class文件和.c文件不在同一个文件夹中,假设HelloJava.class在c盘根目录下,又该如何调用?

    # include<stdio.h>
    # include<stdlib.h>
    main(){
           printf("Hello world ! 
    ");
           //这里两个其中一个表示转义
           system("java -classpath c:\ HelloJava");
           system("pause");
           }
    
  • 相关阅读:
    CF1454F Array Partition
    leetcode1883 准时抵达会议现场的最小跳过休息次数
    leetcode1871 跳跃游戏 VII
    leetcode1872 石子游戏VIII
    CF1355C Count Triangles
    CF1245D Shichikuji and Power Grid
    CF1368C Even Picture
    CF1368D AND, OR and square sum
    CF1395C Boboniu and Bit Operations
    SpringBoot和开发热部署
  • 原文地址:https://www.cnblogs.com/lenve/p/4518013.html
Copyright © 2011-2022 走看看