在我的代码中,我当前使用以下命令从本机调用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
是魔术,但我发现的东西我真的不明白。所以我希望我能得到一个更简单的答案。
暂无答案!
目前还没有任何答案,快来回答吧!