我可以访问指向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)
...哪个允许我 - 我认为 - 用我的指针地址填充结构。该方法具有包访问权限,从此我将其修改为 public ,这意味着我将开始黑客攻击库...
是否有更简单的方法来解决问题,可能是在JNA本身或者可能以其他方式解决?
答案 0 :(得分:0)
使用JNA,您可以轻松地将您的struct按值传递给Java,更新它并将其发回(按值)。
我很确定不可能有Java对象,它由指向C结构的指针映射,因为java和C使用不同的内存模型