java - JNA Java 使数据可供其他类使用

标签 java jna

我正在使用 JNA 从 Java 访问 C++ 共享库。我有一个类,其中包含类似“公共(public)接口(interface) InterfaceLib 扩展库”之类的内容,从中我可以调用 C++ 方法并且它可以工作。问题是,我希望调用这些方法时生成的数据可供其他类使用(我有 Jframe,并且想要从一个类转到另一个类)。如果我理解得很好的话,我的主要问题是我想要由调用 JNA 方法的类的这个特定实例生成的数据。抱歉,如果我不能很好地解释它。到目前为止,我找到的唯一可行的解​​决方案(但我认为不是最有效的)是将一次运行 JNA 方法获取的数据总量解析为某些类成员,然后将这些成员解析为构造函数中的参数下一帧等等 更具体地说,我有一个按钮“运行系统”,当我按下这个按钮时,我运行我的 C++ 代码,这些代码会生成本次运行的数据,使本次运行的数据可供其他类使用的最有效方法是什么? p>

最佳答案

我不太清楚你的问题,但我认为这些是关键点(第二个对于你正在做的事情更重要):

  1. 调用 native 代码时会产生相当大的开销。数据必须在 JVM 和主机之间进行转换和移动,这是相当繁重的。因此,您需要确保您的 native 调用正在执行大量处理。例如,如果它们只是将两个数字相加,那么在 Java 中执行此操作会更快,而不必担心 native 调用。
  2. JNA 层为您进行翻译。您将从本地调用返回结果,然后由您决定如何处理它。如果您想让数据可供其他类使用,您可以像数据是由 Java 方法生成一样来执行此操作。事实上,它是通过 JNA 调用来的,这并没有什么区别。将结果数据传递给另一个类的方法,或者将其存储在类字段中并创建 getter,或者将其写入文件,或者您喜欢的任何内容。

关于java - JNA Java 使数据可供其他类使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26074707/

相关文章:

java - 如何在hadoop中为Java使用CombineFileInputFormat?

java - 无法从加载器加载库

jna/jni 的 java 调用 Hook 失败

java - JNA system() 是否避免 fork

android - 在 Android Studio 中设置 JNA

java - 如何有效地在双循环中执行条件检查?

java - 按下对话框的按钮时打开另一个 Activity ?

java-native-interface - 如何在jna中模拟int * c指针?

java - 使用 Spring Boot 1.3.2(没有 spring-cloud-security)和 @EnableOAuth2Sso 配置 AuthenticationSuccessHandler

java - 线程在我的 Java IRC 机器人上不能正常工作