如何调用返回char* (Java中的String和c++中的char*)的方法
What to call method which returns char* ( String in Java and char* in C++)?
我在Java中有一个函数,像
public boolean getIsIn();
public String getName();
在c++中,我有像
这样的包装函数 bool gPGIsIn(){
JNIEnv* env = s3eEdkJNIGetEnv();
return (bool)env->CallBooleanMethod(g_Obj, g_s3eGPGIsIn);
}
char* gPGGetName(){
JNIEnv* env = s3eEdkJNIGetEnv();
// below is a problem, what to call
//return (char*)env->CallWahtMethod(g_Obj, g_s3eGPGGetName);
}
,
static jmethodID g_s3eGPGIsIn = env->GetMethodID(cls, "getIsIn", "()Z");
static jmethodID g_s3eGPGGetName = env->GetMethodID(cls, "getName", "()Ljava/lang/String;");
如何在gPGGetName中标记为问题的行调用返回char* (Java中的字符串和c++中的char*)的方法?
它返回一个String
对象,您可以使用JNI字符串函数将该字符串转换为char*
:
char* gPGGetName() {
jobject objStr = env->CallObjectMethod(g_Obj, g_s3eGPGGetName);
jsize len = env->GetStringUTFLength(objStr);
const char* strPtr = env->GetStringUTFChars(objStr, 0);
char* buffer = (char*)malloc((len + 1) * sizeof(char));
memcpy(buffer, strPtr, len);
buffer[len] = ' ';
env->ReleaseStringUTFChars(objStr, strPtr);
return buffer;
}
相关文章:
- 初始化或分配空字符串文字到指向 C 中的 char 的指针或指向 C++ 中 const char 的指针的原因是什么
- 构造函数 (C++) 中的 char 指针参数存在问题
- 将上一行添加到 char* 数组中的 char* 常量
- C 如果字符串中的char
- 我们应该在带有 char *func(char *string) 的函数中返回什么?需要简要说明这与 c 中的 char
- 使用C 中的Char数组的指针
- 编程语言中的 char-int 等价性
- 类中的char*p()声明
- Windows 10中的Char*的内存分配问题
- 将字符串转换为c 中的char*时,畸形输出
- 从std :: string转换为c 中的char *
- 有什么方法可以将std :: string :: iterator的值存储在C 中的char *中
- qsort()中的char*和char []之间的混淆
- 从二维数组中的char*初始化c++字符串时,读取大小为1的无效值
- C++ 在模板专用化中从 strcmp() 中的 'char' 到 'const char*' 的无效转换
- 将包含十六进制值的字符串转换为c中的char字节
- C++中的Char*数组内存分配
- 有没有任何方法可以从C++中的char中获取虚拟密钥代码
- Char 数组解释为构造函数中的 char 指针请帮助
- 打印值存储在 C 中的 **char 中