java - 如何使用 JNA 从结构中获取 Structure.ByReference?

标签 java c jruby jna

我的 java 代码中确实有一个 Structure 对象。但是使用 JNAerator 生成的 Jar 需要 Structure.ByReference 作为数据类型。 jna或代码片段中是否有任何方法可以将Structure对象转换为Structure.ByReference对象?

最佳答案

一般情况下,传递参数时不需要显式指定Structure.ByReference。如果它是一个参数,您可以从签名中删除 .ByReference ,它就可以正常工作。

如果它是结构中的字段,则 JNA 将 Structure 解释为按值,在这种情况下,您需要提供 .ByReference 明确地。

这是一种方法。

class MyStructure extends Structure {
    class ByReference extends MyStructure implements Structure.ByReference {
        public ByReference() { }
        public Byreference(Pointer p) { super(p); read(); }
    }
    public MyStructure() { }
    public MyStructure(Pointer p) { super(p); read(); }
}

MyStructure s;
// ...
MyStructure.ByReference ref = new MyStructure.ByReference(s.getPointer());

关于java - 如何使用 JNA 从结构中获取 Structure.ByReference?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26288659/

相关文章:

java.lang.NumberFormatException : empty String 异常

java - 在MySQL中,如何获取存储过程的第一个输入参数的参数名称?

c# - C代码中的数组索引混淆

ruby-on-rails - 我们可以使用 Ruby on Rails 开发移动应用程序吗?

ruby - Paypal express ActiveMerchant 网关不工作

java - Oracle 网站中的字符流示例代码令人困惑

java - 为什么我的 for 循环不工作

c - 用 C 程序替换 pipe-shellscript

c - 为什么UDP socket通信不出错?

ruby-on-rails - Windows 上 Paperclip 和 JRuby 的路径错误