带参数的java eclipse jni回调

xbp102n0  于 2021-06-29  发布在  Java
关注(0)|答案(0)|浏览(235)

在我的代码中,我当前使用以下命令从本机调用java应用程序中的函数:
java

public static void printProcess()
    {
            System.out.println("Test Callback");
            //progressBar.setValue(n);

    }

本地的

void OnProcess(float fPercent, float fDeviceBuffer, float fCache,
               double dBytesWritten, double dImageSize, void *pUserData)
{
    if(nDebug==true) {
        std::cout << "\n !!! Process !!! \n";

    }

    JNIEnv *jEnv = NULL;
    g_jVM->AttachCurrentThread((void**)(&jEnv), NULL);
    if (jEnv == NULL)
        {
            if(nDebug==true) {
                std::cout << "\n !!! Failed to attach current thread with JVM !!! \n";
            }
            return;
        }

    jclass jClz = jEnv->FindClass("JNIViie");
    if (jClz == NULL)
        {
            if(nDebug==true) {
                std::cout << "\n %%%\t !!! FindClass returns NULL !!! \n";

            }
            return;
        }

    jmethodID jMid = jEnv->GetStaticMethodID(jClz, "printProcess", "()V");
    if (jMid == NULL){

        if(nDebug==true) {
            std::cout << "\n %%%\t GetStaticMethodID returns NULL !!!\n";

        }
        return;
    }

    jEnv->CallStaticVoidMethod(jClz, jMid);
    g_jVM->DetachCurrentThread();

}

但是如何通过这个回调将值传递给java类呢?像整数还是字符串?
java

public static void printProcess(jint nProcess, String nMessage)
    {
            System.out.println(nMessage);
            progressBar.setValue(nProcess);

    }

也许是 GetStaticMethodID 是魔术,但我发现的东西我真的不明白。所以我希望我能得到一个更简单的答案。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题