Reputation: 714
I'm working JNI and I wonder is it possible to communicate via delegate
.
for example:
Kotlin
typealias MessageReceived = (msg: String) -> Unit
external fun RegisterCallback(callback: MessageReceived)
C++ (JNI)
JNIEXPORT void Java_some_package_name_Foo_RegisterCallback(JNIEnv* env, jobject, void (*MessageReceived)(jstring msg)) {
if (MessageReceived != nullptr) {
char buffer[260] = {0};
sprintf(buffer, "Callback registered!");
jstring messageJStr = env->NewStringUTF(buffer);
MessageReceived(messageJStr);
env->DeleteLocalRef(messageJStr);
}
}
is it impossible?
When I ran this code, I can't access and get SIGSEGV (address access protected).
I found this, but it seems to complicated to me.
Thank you for your interest
Upvotes: 3
Views: 770