我想将结构从java传递给C代码,并使用JNI将结构从C返回到Java代码。我没有找到有关结构和网上JNI的有用信息。
有人可以提供一个简单的代码片段吗?
答案 0 :(得分:1)
这是一个非常广泛的领域,你需要在网上做更多的研究(它已经覆盖在那里)。但是,简单地说......
如果你只想保留一大块数据并在不改变它的情况下在java方法之间传递它,你可以将它存储在Java字节数组中。
你也可以在C端使用malloc()结构,然后向Java传递一个指针(理想情况下存储在一个字节数组中,原因是我赢了;进入)。同样,Java不能弄乱数据,但至少可以传递对它的引用。
如果您确实需要双方都可以通过字段访问并更改的数据结构,那么您需要创建在两者之间进行转换的包装函数(C结构和Java类)。自动执行此操作的一种方法是使用SWIG,这是一个代码生成器,可以从C包含文件为您生成JNI包装器代码。