`
除了你无可取代
  • 浏览: 147989 次
  • 性别: Icon_minigender_1
  • 来自: 悲鸣洞穴
社区版块
存档分类
最新评论

JNI 调 C C++ 参数String

    博客分类:
  • java
阅读更多
首先编译java的类。 类中方法必须是 native
得到.class文件。
然后 javah HelloJni
得到 HelloJni.h 文件 这个文件是c c++的头文件。通过它可以调用c的dll工程

jni.h是jdk下面的 我的路径是E:\jdk5\include  里面的.h文件 dll工程都需要。

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloJni */

#ifndef _Included_HelloJni
#define _Included_HelloJni
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     HelloJni
 * Method:    getInt
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_HelloJni_getInt
  (JNIEnv *, jobject, jint);

/*
 * Class:     HelloJni
 * Method:    getString
 * Signature: (Ljava/lang/String;)Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_HelloJni_getString
  (JNIEnv *, jobject, jstring);

#ifdef __cplusplus
}
#endif
#endif






// org_danlley_jni_test_HelloJniTest.cpp: implementation of the org_danlley_jni_test_HelloJniTest class.   
//   
//////////////////////////////////////////////////////////////////////   
  
#include "HelloJni.h" 
#include <jni.h>   
#include <stdio.h>   

/*
 * Class:     HelloJni
 * Method:    getInt
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_HelloJni_getInt (JNIEnv *env, jobject  obj, jint i)
{
	 i*=i;   
    return i;
}


/*
 * Class:     HelloJni
 * Method:    getString
 * Signature: (Ljava/lang/String;)Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_HelloJni_getString(JNIEnv * env ,jobject  obj, jstring prompt)
{
	
	const char* str;
    str = (*env)->GetStringUTFChars(env, prompt, 0);//调c写法
	
	//c++写法 str = env->GetStringUTFChars(prompt, 0);
	
    if(str == NULL) {

        return NULL; /* OutOfMemoryError already thrown */

    }

    (*env)->ReleaseStringUTFChars(env,prompt, str);


    //const char* tmpstr = "return string succeeded";

    return (*env)->NewStringUTF(env,str);
	
}




  下面附上我自己跑的工程。java工程 放在eclipes下面可以跑。
  参考博客:  http://www.iteye.com/topic/295776  Java JNI 编程进阶
   http://www.iteye.com/topic/304594  JNI技术实践小结
分享到:
评论

相关推荐

    Android JNI 断点调试C++

    在Android开发中,JNI(Java Native Interface)是一个关键的组件,允许Java代码调用本地(C/C++)代码,反之亦然。这对于性能敏感的应用、底层库的集成以及利用现有C/C++库是非常有用的。本教程将聚焦于如何在...

    JNI与C++数据类型传递示例(包括ArrayList对象、ArrayList嵌套返回)

    一个C++(Ubuntu16.04+QT5.9.1)通过JNI,调用JAVA类及方法的示例。通过JNI传递和返回多种类型的参数,boolean ,int,String,ArrayList&lt;string&gt;,ArrayList嵌套ArrayList&lt;ArrayList&lt;String&gt;&gt;等。

    android 使用jni调用c++

    在这里,`extern "C"`用于告诉编译器使用C语言的链接规则,`JNIEXPORT`和`JNICALL`是JNI定义的宏,用于指定函数的导出和调用约定。`JNIEnv *env`参数是JNI接口指针,用于访问JNI函数。`jobject`参数是Java对象的引用...

    Jni中C++和Java的参数传递

    在JNI中,我们可以使用C++或C语言编写本地方法,这些本地方法可以直接访问和操作Java对象,包括传递参数和接收返回值。在涉及到C++和Java之间的参数传递时,有一些特定的规则和技巧需要注意。 首先,我们要理解Java...

    JNI开发Java和C/C++互相传递List集合

    JNI开发Java和C/C++互相传递List集合, 可以参考: Java从C/C++获取List集合对象:https://blog.csdn.net/niuba123456/article/details/80994166 Java传递List集合对象到C/C++ ...

    JNI处理hashmap,string等对象的操作

    JNI接口提供了大量的函数,让本地方法(C/C++代码)能够创建、访问和修改Java对象。要使用JNI,你需要定义一个Java类,该类包含一个 native 方法声明,然后使用`javah`工具生成对应的C/C++头文件。接下来,编写实现...

    JNI学习二:字符串参数传递与返回值

    在本示例中,我们关注的是JNI中的字符串参数传递和返回值处理,这对于那些需要在Java和C/C++之间进行深度集成的项目非常重要。 1. **JNI基本概念** JNI是Java平台提供的一个接口,它使得开发者可以编写本地方法...

    JNi调用c++写本地文件小例子

    JNI是一个接口,它允许Java代码调用本地(非Java)方法,通常是C或C++编写的。这使得开发者可以在Java程序中利用已有的C/C++库,或者利用C/C++的高性能特性,例如处理I/O密集型任务或硬件交互。 在本例中,我们有两...

    java的jni方式调用C++封装的库文件

    JNI,全称为Java Native Interface,是Java平台提供的一种标准接口,用于让Java代码能够直接调用本地(非Java)代码,如C++、C等语言编写的库。通过JNI,开发者可以在Java应用程序中利用已有的C++库,提升性能或实现...

    JAVA通过JNI调用C++代码函数的示例DEMO

    在Java编程环境中,有时我们需要利用C或C++的高效性能来执行特定任务,这时我们可以借助Java Native Interface(JNI)来实现。JNI是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。本示例DEMO将...

    jni java调用c/c++

    Java 通过 JNI 调用 C/C++ 实现动态库加载 Java Native Interface (JNI) 是 Java虚拟机(JVM)提供的一种接口,允许 Java 代码和本地代码(如 C/C++)之间的交互。通过 JNI,Java 程序可以调用 C/C++ 代码,实现 ...

    通过JNI实现C++与JAVA相互调用之TCP编程

    在这个"通过JNI实现C++与JAVA相互调用之TCP编程"的示例中,我们探讨的是如何使用JNI来实现TCP通信,其中C++作为底层通信引擎,而Java则负责上层应用逻辑。 首先,TCP(Transmission Control Protocol)是一种面向...

    Java通过JNI调用C语言函数库的方法.zip

    Java通过JNI(Java Native Interface)调用C语言函数库是一种常见的技术实践,它允许Java程序直接与本地操作系统和硬件交互,提高性能或者利用已有的C/C++代码库。本资料"Java通过JNI调用C语言函数库的方法.zip"提供...

    JNI调用C++的应用实例

    JNI,全称Java Native Interface,是Java平台中用于实现Java代码与其他语言(如C/C++)交互的关键技术。自Java 1.1起,JNI已成为Java平台的标准组成部分,它允许Java应用程序利用本地代码实现特定的功能,如访问操作...

    JNI中C和Java参数传递详细例子

    本文将深入探讨在JNI环境中,C/C++和Java之间如何进行参数传递,特别关注于结构体的传递。 #### 二、JNI基础概念 在开始之前,我们先简要回顾一下JNI的基本概念: - **JNIEnv**: 一个指针,提供了JNI函数接口。 - *...

    Android APP 用interface 接口的形式对jni进行回调,实例测试

    在Android中,Java接口可以作为参数传递给JNI方法,这样就可以在C/C++代码中调用Java对象的方法。这种方式使得JNI层能够主动通知Java层某些事件的发生,增强了两者之间的通信能力。 1. 创建Java接口 创建一个Java...

    Jni中C++和Java的参数传递.pdf

    在Java中,JNI通常用于提升性能,访问操作系统特定功能,或是集成已有的C/C++代码库。 在Java中定义JNI方法时,需要使用`native`关键字声明。例如,我们可以定义一个`DiskInfo`类,包含一个字符串`name`和一个整型`...

Global site tag (gtag.js) - Google Analytics