Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在应用程序运行时向Java对象返回常量动态JNI数据_Java_C++_Jvm_Java Native Interface_Jnienv - Fatal编程技术网

在应用程序运行时向Java对象返回常量动态JNI数据

在应用程序运行时向Java对象返回常量动态JNI数据,java,c++,jvm,java-native-interface,jnienv,Java,C++,Jvm,Java Native Interface,Jnienv,所以我有一个程序,当应用程序运行时,我不断地从我的JNI函数(在C++中)检索数据,我在JNI函数中检索这些数据 但是我想将数据传递给我的Java类,该类处理这些输入值(例如x和y值) 在应用程序运行时,我应该如何不断地将数据传递给Java类 如果您有一个Java应用程序调用JNI库中的函数,而该函数又启动了第二个线程,需要定期将数据发送回Java,我们将不胜感激 假设情况如此: 选项1是:JNI_GetCreatedJavaVMs将为您提供现有VM的句柄,您可以从那里继续。附加新线程,然后可以

所以我有一个程序,当应用程序运行时,我不断地从我的JNI函数(在C++中)检索数据,我在JNI函数中检索这些数据 但是我想将数据传递给我的Java类,该类处理这些输入值(例如x和y值)

在应用程序运行时,我应该如何不断地将数据传递给Java类


如果您有一个Java应用程序调用JNI库中的函数,而该函数又启动了第二个线程,需要定期将数据发送回Java,我们将不胜感激

假设情况如此:

选项1是:
JNI_GetCreatedJavaVMs
将为您提供现有VM的句柄,您可以从那里继续。附加新线程,然后可以调用静态方法(
FindClass
/
GetStaticMethodID
/
CallMethod
),或者可以调用对象中的方法(
GetObjectClass
/
GetMethodID
/
CallMethod
)。您必须在上一次调用中从Java传递对象,并将其保存在全局引用中


选项2是:如果您的库不必因为其他原因成为JNI库,那么您可以将其设置为“常规”库,并通过JNA调用它。JNA支持通过
回调
类将函数指针传递到本机函数。然后可以从新线程调用此回调。

正在运行什么?一个循环?是的,JNI函数中有一个循环,它返回数据o您尝试了什么,您遇到了什么问题?您似乎有一个循环来调用此方法,它每次都返回新数据。