`

C++调用JAVA方法详解

 
阅读更多

JNI允许运行在虚拟机的Java程序能够与其它语言(例如C和C++)编写的程序或者类库进行相互间的调用。同时JNI提供的一整套的API,允许将Java虚拟机直接嵌入到本地的应用程序中。

 

环境搭建

1、安装jdk及配置环境配置

2、配置vc++ 6.0



 


编写java代码:

 

package org.nickfover.jni;
public class Demo {
  public static int COUNT = 4;
  private String msg;
  private int[] counts;
  public Demo(){
	  this("缺省的构造方法");
  }
  public Demo(String s){
	  this.msg = s;
  }
  public String getMessage(){
	  return msg;
  }
  public static String getHelloworld(){
	  return "Hello world!!";
  }
  public String append(String str,int i){
	  return str + i;
  }
  public int[] getCounts(){
	 return counts;
  }
  public void setCounts(int[] counts)
  {
	  this.counts = counts;
  }
  public void throwExcp()throws IllegalAccessException
  {
	  throw new IllegalAccessException("execption occur.");
  }
}

 

 

编译(注:用eclipse编写的出现编译错误,我把复制出来粘贴在文档文件中,可能是编码的问题)
之后用javap命令查看(javap是jdk自带的反编译软件):

E:\ECLIPSEWORKPALCE\JNI\src\org\nickfover\jni>javac Demo.java

E:\ECLIPSEWORKPALCE\JNI\src\org\nickfover\jni>javap -s -p Demo 

Warning: Binary file Demo contains org.nickfover.jni.Demo
Compiled from "Demo.java"
public class org.nickfover.jni.Demo {
  public static int COUNT;
    Signature: I     //这个是指对象在内存中的类型表示,在java模块的类加载哪章有见解
  private java.lang.String msg;
    Signature: Ljava/lang/String;
  private int[] counts;
    Signature: [I
  public org.nickfover.jni.Demo();
    Signature: ()V                     //()V表示void,括弧内表示参数
  public org.nickfover.jni.Demo(java.lang.String);
    Signature: (Ljava/lang/String;)V   //L表示String
  public java.lang.String getMessage();
    Signature: ()Ljava/lang/String;    //()L表示返回String型
  public static java.lang.String getHelloworld();
    Signature: ()Ljava/lang/String;
  public java.lang.String append(java.lang.String, int);
    Signature: (Ljava/lang/String;I)Ljava/lang/String;
  public int[] getCounts();
    Signature: ()[I
  public void setCounts(int[]);
    Signature: ([I)V
  public void throwExcp() throws java.lang.IllegalAccessException;
    Signature: ()V
  static {};
    Signature: ()V
}

 

 

 

 

 

 

 

参考:http://public0821.iteye.com/blog/423941

  • 大小: 14.8 KB
  • 大小: 11.2 KB
分享到:
评论

相关推荐

    在 C/C++ 中调用 Java

    从 C/C++ 中调用 Java 代码,有一下几个步骤: 1.创建 JVM。调用 JNI_CreateJavaVM()。 2.寻找要调用的类。调用 FindClass()。 3.找到要调用的方法。调用 GetStaticMethodID()/GetMethodID()。 4.运行方法。...

    C调用java详解和源代码

    C调用java程序详解和源代码,前一阵子,趁有机会了解了JNI的一些东西,并按我的方法对JNI做了些封装,我就可以在C++ 中调用一些java写的功能了

    C#调用Java方法实例详解

    最近由于工作原因接触这方面比较多,根据实际需求,我们通过一个具体例子把一个JAVA方法转换成可以由C#直接调用的DLL C#调用c++ C#调用C++的例子网上很多,以一个C++的具体方法为例。 C++代码 // 获取一帧图像数据 ...

    C/C++和Java的交互详解

    本文旨在简单的介绍一下如何让java层和C/C++层相互调用,这里主要是使用了JNI技术,并没有深究其原理,只是做了个实现,其目的是为后面的学习打开一扇窗。

    java堆栈的区别 -- 详解

    栈: 在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是...

    Java调用外接设备详解(制卡机)

    主要为大家详细介绍了Java调用外接设备的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    JNI使用规范详解.pdf

    即可以在Java代码中调用C/C++等语言的代码或者在C/C++代码中调用Java代码。由于JNI是JVM规范的一部分,因此可以将我们写的JNI的程序在任何实现了JNI规范的Java虚拟机中运行。同时,这个特性使我们可以复用以前用C/...

    android jni详解

    Android调用C++接口调用技术Java Native Interface(JNI)详解,

    The Java Native Interface jni

    JNI技术详解,帮你快速掌握Java调用C/C++的JNI技术。

    Android NDK开发(1)----- Java与C互相调用实例详解

    对于大部分应用开发者来说可能都不怎么接触到NDK,但如果涉及到硬件操作的话就不得不使用NDK...使用NDK还有另一个原因,就是C/C++的效率比较高,因此我们可以把一些耗时的操作放在NDK中实现。所以NDK主要做驱动的开发。

    Objective-C 消息传递机制详解

    在C++或Java里,类与类的行为方法之间的关系非常紧密,一个方法必定属于一个类,且于编译时就已经绑定在一起,所以你不可能调用一个类里没有的方法。而在Objective-C中就比较简单了,类和消息之间是松耦合

    2010年谢彦的android笔记

    3.1.1 从c++到java(一) 46 3.1.2 从c++到java(二) 47 3.2 常用技术 49 3.2.1 如何新建和使用控件 49 3.2.2 使用定时器Timer及消息处理 51 3.2.3 操作调试数据库与ContentProvider详解 53 3.2.4 电源管理 56 ...

    PHP安装protobuf详解

    当前的google protocol buffer仅支持:C++,Java,Python。PHP作为WEB开发的主力居然没有得到google protocol buffer的官方支持实在是有一些遗憾。 目前PHP支持google protocol buffer的开源实现包括pb4php、phpbuf...

    C#类的多态性详解

    C#语言的方法重载与C++、java基本是一样的,但是C#还包含C++的运算符重载,java里面没有这个概念。 第二种:运行时的多态性,是在系统运行时,调用一个名字相同,参数类型也相同以及个数也完全一样的方法,但会完成...

    Linux多线程服务端编程:使用muduo C++网络库

    《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...

    Python 的类、继承和多态详解

    最最基本的就是 __init__ 方法,相当于 C++ / Java 的构造函数。带双下划线 __ 的方法都是特殊方法,除了 __init__ 还有很多,后面会有介绍。 参数 self 相当于 C++ 的 this,表示当前实例,所有方法都有这个参数,...

    YOLOv8目标检测源码.rar

    YOLOv8目标检测源码.rar

    Android下JNI入门详解

    适合对JNI尚不了解的开发者。介绍如何在Android环境下使用JNI已达到java与C/C++函数互调,描述如何在VM中调用C/C++函数。

    懒人办公插件_Office_插件_

    office插件 支持接入 word excel 操作 ,支持TC 易语言 , c++ java 接入操作 ,需放在线程中执行

Global site tag (gtag.js) - Google Analytics