# re: [JNI] Eclipse直接完成JAVA调用C/C++ (Eclipse上使用CDT结合MinGW) 2007-05-24 16:05 | 三告习习
顺便说说 java类型 与 本地等效类型,下面是一个对照关系
=================================
Java类型 本地类型 说明
boolean jboolean 无符号,8 位
byte jbyte 无符号,8 位
char jchar 无符号,16 位
short jshort 有符号,16 位
int jint 有符号,32 位
long jlong 有符号,64 位
float jfloat 32 位
double jdouble 64 位
void void N/A
为了使用方便,特提供以下定义。
#define JNI_FALSE 0
#define JNI_TRUE 1
jsize 整数类型用于描述主要指数和大小:
typedef jint jsize;
==================================
举例子说说吧。
对于返回字符串类型:
JNIEXPORT jstring JNICALL Java_nativeGetSomeString
(JNIEnv *env, jobject obj,jstring s){
/* 取得 Java 字符串的 C++ 版本 */
const char *str = env->GetStringUTFChars(s, 0);//str可以在c++上用了,这是参数s转换而来的
/* 处理该字符串 */
//===================================== 在这下面实现你的业务 =============================
char *retStr = "hello, this is test!";
jstring retJstr=env->NewStringUTF(retStr);
//===================================== 在这上面实现你的业务 =============================
/* 至此完成对 str 的处理,这个指针在调用ReleaseStringUTFChar()函数之前一直有效 */
env->ReleaseStringUTFChars(s, str);
return retJstr;
}
对于返回整数型的:
JNIEXPORT jint JNICALL Java_nativeGetOneInt
(JNIEnv *env, jobject obj){
jint retJint = 0;
int temp = 1001;
retJint = (jint)temp;
return retJint;
}
对于返回布尔类型的:
JNIEXPORT jboolean JNICALL Java_nativeGetOneBoolean
(JNIEnv *env, jobject obj,jstring s){
/* 取得 Java 字符串的 C++ 版本 */
const char *str = env->GetStringUTFChars(s, 0);//str可以在c++上用了,这是参数s转换而来的
/* 处理该字符串 */
jboolean retBoolean=0; //直接可用于C/C++ ,按照业务来修改此值,此值有待修改候返回;
//===================================== 在这下面实现你的业务 =============================
//===================================== 在这上面实现你的业务 =============================
/* 至此完成对 str 的处理,这个指针在调用ReleaseStringUTFChar()函数之前一直有效 */
env->ReleaseStringUTFChars(s, str);
return retBoolean;
}
其他的还有数组类型的,等下次具体做些总结再贴出来了 回复 更多评论