0

我可以访问指向 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 本身,或者可能是其他方式?

4

1 回答 1

0

使用 JNA,您可以轻松地将结构按值传递给 Java,对其进行更新并将其发送回(按值)。

我很确定不可能拥有通过指针映射到 C 结构的 Java 对象,因为 java 和 C 使用不同的内存模型

于 2012-05-10T14:32:48.237 回答