(JNI)c++与java的交互

问题描述

(JNI)c++与java的交互

我要写一个c++的应用程序,但它要调用java的函数,所以用到了JNI,但有一个疑问:java 里面有一个回调,我想c++里面传递一个function给java的回调,求问怎么实现呢??

解决方案

一. C++ 调用 Java

二. Java 调用 C++......
答案就在这里:C++与java通过jni交互

解决方案二:

jni主要作用是协调转换变量类型,java中的方法若需要底层实现需要定义为native,然后用c或c++来实现。
很明显,java作为高级语言完成功能依赖的就是c类语言支持,你需要java实现的功能,c++自身肯定可以实现,况且你见过汇编需要回调c来实现功能么,有这想法不如找一下java功能的底层实现,直接拷贝代码,这样方便,并且效率也不会有折扣。

解决方案三:

jni主要作用是协调转换变量类型,java中的方法若需要底层实现需要定义为native,然后用c或c++来实现。
很明显,java作为高级语言完成功能依赖的就是c类语言支持,你需要java实现的功能,c++自身肯定可以实现,况且你见过汇编需要回调c来实现功能么,有这想法不如找一下java功能的底层实现,直接拷贝代码,这样方便,并且效率也不会有折扣。

时间: 2024-11-18 08:16:07

(JNI)c++与java的交互的相关文章

[Android Webkit]JNI基础及Java层与C++层的交互

1. JNI 注册 1.1. JNI的基础结构       JAVA == JNI == Native Code      JNI(Java Native Interface)是Java与Native Code(C/C++/...)代码交互的中介Java+JNI构成主程序 JNI+Native Code以动态库的形式供程序调用.      JNI的实现可涉及两个关键类:JNIEnv和JavaVM.两者都可以理解为函数表(Function Pointer Table), 前者是使用Java程序创建

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

安卓中支持c++(NDK)和java(SDK)语言,当使用到c++语言时,c++代码和java如何交互就尤为重要.在下载的NDK包中samples/hello-jni有一个简单的实例可以参考. java调用C++ 新建Android项目,创建如下类: package com.example.testjni; public class TextJni { // support to c static { System.loadLibrary("jniinterface"); } publ

flex in action (五)flex与后台Java进行交互(1)

flex进行Java的交互采用mx:RemoteObject标签进行的. 你首先要做 的事情是下载一个blazeds.war. 然后选择新建一个flex program.在 application server type要选择J2EE. 点下一步, 出现

使用flex中的httpservice方法与java进行交互

 这篇文章主要介绍了使用flex中的httpservice方法与java进行交互,需要的朋友可以参考下 地球已经调至震动状态使用flex中的httpservice方法与java进行交互:    一.写服务器:  1.在myeclipse中建立web项目  2.写一个用来打印xml的servlet  3.当使用httpservice与java进行交互的时候不用改写remoting-config.xml文件  4.web.xml文件中配置servlet的访问地址(一般不用配置,当一个servlet建

java 数据交互 json-java数据交互,json传值

问题描述 java数据交互,json传值 传json格式的数据到后台,为什么接受不到,数据都是空的,打断点居然蹦不到后台,浏览器的开发者工具提示404错误,找不到路径,但是路径又是对的 解决方案 说明根本没有调用你的服务器端,如果你用的struts等框架,检查下url映射的配置. 解决方案二: 到不了后台说明你的请求路径配置错误,404就是你的请求根本找不到对应的资源.检查下配置吧. 解决方案三: 你的路径应该是有错的,或者路径配置有问题,并没有进入对应的servlet或者action 解决方案

c语言-c通过jni调用 HBASE JAVA API

问题描述 c通过jni调用 HBASE JAVA API jvm.dll!6db71017() 未知[下面的框架可能不正确和/或缺失,没有为 jvm.dll 加载符号] jvm.dll!6db71086() 未知jvm.dll!6db710e0() 未知jvm.dll!6dde9d1d() 未知jvm.dll!6deaa65d() 未知jvm.dll!6ddfd291() 未知jvm.dll!6dd07d3d() 未知jvm.dll!6dd11511() 未知022003e4() 未知jvm.d

通过tomcat启动后的web项目如何跟另外一个java项目交互

问题描述 通过tomcat启动后的web项目如何跟另外一个java项目交互 项目经理让我完成对一个web项目的日志级别动态修改,要我提供一个接口用于修改日志级别, 我首先想到了使用servlet,通过访问servlet来修改,可项目经理却叫我用Main来实现这一功能,生成一个jar包通过本地的脚本语言调用这个jar包的Main方法来修改日志级别.Socket也不能使用. 两个java程序在以上不能使用的方法外,还能可以使用哪些方法进行交互呢? 解决方案 http://www.iteye.com/

使用flex中的httpservice方法与java进行交互_Flex

地球已经调至震动状态使用flex中的httpservice方法与java进行交互: 一.写服务器: 1.在myeclipse中建立web项目 2.写一个用来打印xml的servlet 3.当使用httpservice与java进行交互的时候不用改写remoting-config.xml文件 4.web.xml文件中配置servlet的访问地址(一般不用配置,当一个servlet建好之后myeclipse就会自动配置好web.xml文 件,不用去改动,但是需要注意的是,当你在导入blazeds开发

flex in action (六)flex与后台Java进行交互(2)

上一篇将架构已经做好了,现在使用的就是交互程序了. 如图建立: 建立一个Java程序,切换到myeclipse视图下,在src下建立. 代码: 1 package com.duduli.li; 2 3 public class Input { 4 public String display(String name,String sex,String email){ 5 System.out.println("your name is " + name); 6 System.out.pr