从java回调到C++;通过JNI java C++文件,我现在需要给Java模块返回一个C++模块。(这里C++模块是更高的模块,Java是较低的模块。)任何输入都是可以理解的。您正在通过JNI调用C++方法,并且希望为java层提供回C++对象的java语言。我没弄错你的问题吧 我这样做是为了把一个指针作为C++的对象传递给:< /P> class JavaClass { long nativeObjectPtr; // This is the function getting called from C++. void MyFunc(long ptr) { ... nativeObjectPtr = ptr; } ... } 当您从C++调用 MyFunc < /Cord>时,将指针传递给您的本地对象,如: MyClass* ptr = ...; // Pointer to your native object; env->CallVoidMethod(javaObj, myFuncMethodID, (long)ptr);
在Java类中,创建一个本机函数,该函数将调用回本机对象:从java回调到C++;通过JNI java C++文件,我现在需要给Java模块返回一个C++模块。(这里C++模块是更高的模块,Java是较低的模块。)任何输入都是可以理解的。您正在通过JNI调用C++方法,并且希望为java层提供回C++对象的java语言。我没弄错你的问题吧 我这样做是为了把一个指针作为C++的对象传递给:< /P> class JavaClass { long nativeObjectPtr; // This is the function getting called from C++. void MyFunc(long ptr) { ... nativeObjectPtr = ptr; } ... } 当您从C++调用 MyFunc < /Cord>时,将指针传递给您的本地对象,如: MyClass* ptr = ...; // Pointer to your native object; env->CallVoidMethod(javaObj, myFuncMethodID, (long)ptr);,java,c++,java-native-interface,Java,C++,Java Native Interface,在Java类中,创建一个本机函数,该函数将调用回本机对象: // inside JavaClass native void callBackIntoNative(long ptr); void CallBackIntoNative() { callBackIntoNative(nativeObjectPtr); } 和在您的本机函数的强c++实现< /St>中,简单地 > c> < /> > C++ C++类的长,并调用它的适当函数: JNIEXPORT jobject JNICAL
// inside JavaClass
native void callBackIntoNative(long ptr);
void CallBackIntoNative() {
callBackIntoNative(nativeObjectPtr);
}
<>和在您的本机函数的<>强c++实现< /St>中,简单地<强> > c> < /> > C++ C++类的长,并调用它的适当函数:
JNIEXPORT jobject JNICALL JavaClass_callBackIntoNative(JNIEnv* env, jobject obj, jlong ptr)
{
MyClass* o = reinterpret_cast<MyClass*>(ptr);
// We have the pointer to our native object, simply call the needed function.
o->Callback();
}
JNIEXPORT jobject JNICALL JavaClass_callbackintorient(JNIEnv*env、jobject obj、jlong ptr)
{
MyClass*o=重新解释铸件(ptr);
//我们有指向本机对象的指针,只需调用所需的函数。
o->Callback();
}