如何使用JNI从本机C / C ++代码调用Java applet回调函数。请让我知道如何才能正确完成。请为任何代码段提供帮助。
// Java Applet code
public class TestApp extends Applet {
private native void TestMethod(int nValue);
public void callback(int nValue) {
// DISPLAY SOME MESSAGE FROM NATIVE DLL RECEIVED
}
static {
System.load("c/temp/TestDll.dll");
}
}
// TestDll.cpp
JNIEnv *g_env;
jobject g_object;
jmethodID g_method;
JNIEXPORT void JNICALL
Java_Callbacks_TestMethod(JNIEnv *env, jobject obj, jint Value)
{
jclass cls = (*env)->GetObjectClass(env, obj);
jmethodID mid = (*env)->GetMethodID(env, cls, "callback", "(I)V");
g_env = env;
g_Object = obj;
g_method = mid
}
// Cannot be called within the above function
void TestDllCallbackFunction (int nValue)
{
// This is where i want to call the Java callback function… would the below work???
(*g_env)->CallVoidMethod(g_env, g_object, g_method, ((jint)Value);
}
答案 0 :(得分:0)
您还应该考虑使用另一种解决方案作为从C ++到Java的回调的替代方法:
肯定可以通过JNI进行回调,但我认为它们会增加不必要的复杂性。使用上面的方法,你可以把事情更好地分开恕我直言。