我可以访问指向 C 结构的指针的地址。我如何得到它并不重要,我验证并正确接收。
C 定义如下所示:
union Data_u
{
long long u_integer;
struct another_s u_another;
};
struct Data_s
{
unsigned long s_Type;
union Data_u s_Value;
};
我需要将其映射Data_s*
到 Java 中的类似结构。我在互联网上搜索并找到了我认为可以使用的JNA库。
我没有找到使用 JNA 翻译 Java 结构中的 C 结构的正确方法。我看到我可以定义一个对应的 Java 结构,但是,JNA 用于访问本机调用而不是直接结构转换,尽管它支持它。
具体来说,我找到了一些方法,例如:
static Structure updateStructureByReference(Class type, Structure s, Pointer address)
...这将允许我 - 我认为 - 用我拥有的指针地址填充结构。该方法具有包访问权限,从这里开始,我将其修改为公共,这意味着我将开始破解库......
有没有更简单的方法来解决这个问题,可能是在 JNA 本身,或者可能是其他方式?