如何在JNI中将jstring强制转换为std::string



我正在使用JNI从Java调用函数。然后,java将返回一个jstring。我仍然不知道如何将jstring转换回std:string以在C++中使用

这里还有一件事是我的示例代码:

std::string valueAttriButeConverted = "x64x90xa0xe3";
my_cool_Patches.temp= MemoryPatch("il2cpp.so", 0x19E7CD0,
&valueAttriButeConverted, 4);
my_cool_Patches.temp.Modify();

我使用LGL Mod菜单制作游戏的Mod菜单。它使用了KittyMemory。在MemoryBatch中,第三个参数必须是void*。

运行该代码后,内存将使用以下字节进行修补:"08 64 90 a0",而不是"64 90 a0 e3"。我不知道"08"字节为什么以及在哪里。请帮我改正。

以下是将完美运行的代码:

my_cool_Patches.temp= MemoryPatch("il2cpp.so", 0x19E7CD0,
"x64x90xa0xe3", 4);
my_cool_Patches.temp.Modify();

但是,如果我将String更改为variable,它将是错误的值。

我想制作一个在运行时运行的自定义值,让用户选择该值,然后转换为十六进制并放入MemoryBatch。

目前,JNI调用java并完美地返回jstring。

感谢和问候,

&valueAttriButeConverted为您提供一个指向std::string本身的指针,而不是指向其中的数据。要获得指向数据的指针,您应该使用valueAttriButeConverted.c_str()

这个问题和答案应该可以帮助你进行JNI。

最新更新