gpt4 book ai didi

javascript - 使用 JNA、Rhino、JavaScript 分配字符缓冲区

转载 作者:行者123 更新时间:2023-11-30 06:08:40 25 4
gpt4 key购买 nike

在 Narwhal 中,我们使用 JNA 进行 libc 调用,例如 getcwdchdir。我只能以我对 JNA 接口(interface)的有限了解来使用它,因为它与 Rhino 中的 JavaScript 相关,专门处理原语。我需要知道如何分配一个 char 缓冲区,以便我可以将它传递给 getcwd,从该缓冲区中检索一个 JavaScript 字符串,然后释放缓冲区,大概在 finally 子句中.

下面是我们如何获取libc接口(interface):

http://github.com/280north/narwhal/blob/34ac15261fa4acdef3867256e97d7aabb94766e0/engines/rhino/lib/fs-base.js#L32-42

chdir 的实现方式如下:

http://github.com/280north/narwhal/blob/34ac15261fa4acdef3867256e97d7aabb94766e0/engines/rhino/lib/fs-base.js#L438-444

这里是我们需要getcwd的解决方案

http://github.com/280north/narwhal/blob/34ac15261fa4acdef3867256e97d7aabb94766e0/engines/rhino/lib/fs-base.js#L416-419

Ruby 或任何其他 JNA 嵌入式语言的解决方案会有所帮助。

最佳答案

您可以使用 nio.Buffer 或 jna.Pointer 来传递输出缓冲区,例如:

invokeString(new jna.Memory(4097), 4097)

getcwd 会将 char* 返回到输入缓冲区,因此 jna 会将返回编码为字符串

为了支持更长的路径,您可以采用可选的长度

在java中,new File(".").getAbsolutePath()可以获得当前路径,所以你可能不需要getcwd...

关于javascript - 使用 JNA、Rhino、JavaScript 分配字符缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2125288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com