JNI 调 C C++ 参数String

首先编译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下面可以跑。
参考博客: [url]http://www.iteye.com/topic/295776[/url] Java JNI 编程进阶
[url]http://www.iteye.com/topic/304594[/url] JNI技术实践小结
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值