JoakimForslund
08/26/2019, 8:49 AM@CName("Java_com_example_project_createString")
fun createString(env: kotlinx.cinterop.CPointer<JNIEnvVar>, instance: jobject):jstring?{
val jniNativeInterface: JNINativeInterface = env.pointed.pointed!!
val fNewStringUTF = jniNativeInterface.NewStringUTF!!
val result = fNewStringUTF(env, "A test")
return result
}
Where the 'A test' part wont work, because of it not being a jstringJoakimForslund
08/26/2019, 9:11 AMvar jstringConverted = memScoped {
return@memScoped "my string".cstr.ptr
}
and then doing:
val result = fNewStringUTF8(env, jstringConverted)
Takes me some of the wayJoakimForslund
08/26/2019, 9:11 AMsvyatoslav.scherbina
08/26/2019, 9:36 AMbecause of it not being a jstringThis is not related.
I suppose doing:Your string gets deallocated before
fNewStringUTF8
here.
Try
val result = memScoped {
fNewStringUTF8(env, "my string".cstr.ptr)
}
JoakimForslund
08/26/2019, 9:45 AMmsink
08/26/2019, 10:15 AMval result = memScoped {
NewString(env, "my string".utf16.ptr)
}