有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

C++在应用程序运行时返回常量动态JNI数据到java对象

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

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

任何帮助都将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    所以你有一个Java应用程序,它调用JNI库中的一个函数,然后这个函数又启动了第二个线程,需要定期将数据发送回Java

    假设是这样:

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

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