java用string需要头文件吗_Java调用C++(包含jstring到const char*字符串转化) 及其c++调用java字符串传递...

<1>C++中头文件声明。

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

#include

#include "platform/android/jni/JniHelper.h"

#include

#endif

<2>C++中函数实现(jstring转const char*)。

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台

extern "C"

{

void Java_com_qingxue_gameMyHeroPass_MyHeroPass_testJNIString(JNIEnv* env, jobject thiz , jstring jstr)

{

const char* str = env->GetStringUTFChars(jstr, NULL);

if (str == NULL)

{

return;

}

env->ReleaseStringUTFChars(jstr, str);

}

}

<3>const char*转jstring

jstring strencode = env->NewStringUTF("Hello World");

<4>Java中函数原型声明。

public static native void testJNIString(String jstr);

<5>Java中调用本地方法。

String str = "Hello World";

testJNIString(str);

==================

<1>c++调用java字符串接受及其返回一个字符串的传递

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)//判断当前是否为Android平台

JniMethodInfo jmi;

bool isHave = JniHelper::getStaticMethodInfo(jmi,"com/test/testjni","getName","()Ljava/lang/String;");

if(isHave)

{

// 调用CallStaticObjectMethod方法会返回一个jobject对象,在前面弄个(jstring)就可以转换成jstring

// 然后调用JniHelper提供的便捷方法jstring2string(),直接把jstring转成C++中的string(对源码感兴趣的可以直接去看“cocos2dx/platform/android/jni/JniHelper”中的具体实现)

jstring js_pkn = (jstring)jmi.env->CallStaticObjectMethod(jmi.classID,jmi.methodID); //后面继续扩展传递新的参数

std::string str_pkn = JniHelper::jstring2string(js_pkn);

}

#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值