![]() ![]() |
|
jstring和char*之间的转换方法 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 14:41:56 文章录入:杜斌 责任编辑:杜斌 | |
|
|
//jstring to char*
//char* to jstring jstring stoJstring(JNIEnv* env, const char* pat) { jclass strClass = env->FindClass("Ljava/lang/String;"); jmethodID ctorID = env->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V"); jbyteArray bytes = env->NewByteArray(strlen(pat)); env->SetByteArrayRegion(bytes, 0, strlen(pat), (jbyte*)pat); jstring encoding = env->NewStringUTF("utf-8"); return (jstring)env->NewObject(strClass, ctorID, bytes, encoding); } //invoke function JNIEXPORT jstring JNICALL Java_test_cs_web_SWIFTAlianceCASmfTest_strcal (JNIEnv *env, jclass obj, jstring jstr1, jstring jstr2) { jbyteArray bytes = 0; jthrowable exc; char *pszResult = NULL; char *pszSTR1 = NULL; char *pszSTR2 = NULL; pszSTR1 = jstringTostring(env, jstr1); pszSTR2 = jstringTostring(env, jstr2); int nlen = sizeof(char)*(strlen(pszSTR1)+strlen(pszSTR2)); jstring jstrRe = stoJstring(env, pszResult); Note: 函数中间有一些签名的定义,不是很好理解。细节请参考sun的jni文档介绍or command javap |
|
![]() ![]() |