问题标签 [node-ffi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - 在 Windows 上安装 node-ffi
我正在尝试在我的 Windows 开发机器上安装 node-ffi,但安装失败。根据node-ffi 网页,应该支持 Windows。但是,似乎 gyp 正在尝试通过“sh”执行某些操作,这(显然)在我的系统上不存在。有任何想法吗?
我的系统是 Windows 7 x64。
node.js - 是否可以使用 ref-struct 和 ref-array 创建结构数组?
我正在使用 node-ffi 来调用一个函数,该函数将输出参数作为指向结构的指针的指针。有没有办法让我使用 ref-struct 和 ref-array 来访问我得到的数组?
我能够从函数调用后的指针中获取第一个结构,但我无法获取数组的其余部分:
有没有办法将参数声明为结构数组?我已经尝试过了,但它不起作用:
javascript - SDL2 - RenderPresent 随机占用 20-30+ms(在 Node.JS FFI 调用中)
我一直在将 Node.JS FFI 更新为 SDL 以使用 SDL2。( https://github.com/Freezerburn/node-sdl/tree/sdl2 ) 到目前为止,一切进展顺利,我可以成功渲染 1600 多种彩色纹理而没有太多问题。但是,我刚刚开始遇到一个我似乎无法弄清楚的问题,并且似乎与 FFI、GC、Javascript 的速度等没有任何关系。
问题是,当我在启用 VSYNC 的情况下调用 SDL_RenderPresent 时,偶尔每隔几秒钟,此调用将需要 20-30 毫秒或更长时间才能完成。看起来这种情况连续发生 2-3 次。这会在屏幕上移动的任何内容中造成非常短暂但明显的视觉障碍。其余时间,此调用将花费正常的时间来显示在正确时间绘制到屏幕上的任何内容,以便与屏幕同步,并且一切看起来都非常流畅。
如果您克隆上面提到的存储库,您可以看到这一点。使用 node-gyp 构建它,然后运行 test.js。(我可以将测试代码嵌入到 StackOverflow 中,但我认为在 GitHub 上提供完整示例会更容易)需要 SDL2、SDL2_ttf、SDL2_image 位于 /Library/Frameworks 中。(这仍在开发中,所以没有什么特别的东西可以自动查找 SDL2,或者在存储库中拥有所需的代码,或者从某个地方拉取等等)
编辑:这应该可能在 gamedev StackExchange 网站下。不知道它是否可以移动/链接。
node.js - 从节点 js 使用 pAnisChar 调用 Delphi stdcall 函数
我有一个遗留的 Delphi dll,它需要一个 json 字符串作为输入(pAnsiChar)并返回一个 int 作为成功或失败。我已经设法使用 node-ffi 从 nodejs 连接到 dll。但是,我将返回 int 值指向无效的 json 字符串。
有人可以指出我如何使用 pAnsiChar 作为来自节点的函数参数调用 Delphi dll 的方向吗
谢谢
javascript - 如何从 node-ffi 调用函数 EnumPrinters?
根据 MSDN,函数 EnumPrinters 是 Winspool 库的一部分:
Library - Winspool.lib
DLL - Winspool.drv
http://msdn.microsoft.com/en-us/library/windows/desktop/dd162692(v=vs.85) .aspx
但是没有 Winspool.dll。
我尝试使用以下代码在 javascript 中创建库:
但出现以下错误:
node.js - 内存泄漏:在 Linux 中使用 Node JS 下载文件会导致内存泄漏
我正在使用 node.js (v0.10.22) 和 express 模块并向用户提供下载文件功能。每个请求我们平均下载 50 个文件,平均大小约为 700 MB。我们有自己的 C 程序,它在运行时写入这些文件,而子进程将这些文件同步发送给用户。
我们使用 FFI 模块来调用 C 函数。我面临的问题是 node.js 增加了虚拟内存,它也不会释放大量使用的内存,并且在一些下载ENOMEM
出错和崩溃之后。我的 PC H/W 配置是 1 GHZ 单核 proc 和 512 MB RAM。这里的问题是为什么 V8 在每次请求后不释放内存,或者 node / V8 是否需要任何特殊类型的编译。我们已经用 Valgrind 测试了我们的 c 程序,它没有显示任何内存泄漏。
javascript - 如何在 javascript 中执行 UNIX crypt(3)?
有没有办法在 javascript 中执行 UNIX crypt(3)(特别是在 node.js 中)?
crypt(3) 使用 DES,我猜它可以通过 openssl 完成,但是如何从 javascript 访问 openssl?
谢谢
更新
我发现如何使用node-ffi做到这一点:
c - node-ffi 中的库句柄
我正在尝试将 gssapi 集成到 node.js 中。我不确定如何表示这一点:
该gss_init_sec_context
函数包含许多基于结构的参数,其中一些嵌套非常深。例如这个结构:
因此,基于此,我猜我需要实现某种结构(使用 ref-struct)来表示krb5
指针(因为正在使用 kerberos5)。所以我看着这个_gss_krb_ctx_struct
,看到了这个......
其中 Shishi 是指向库的指针,而 shishi_ap 似乎是指向函数的指针。我不确定如何在 node-ffi 中实现这些东西。有人可以在这里给我一些指导吗?
c - 使用 Node.js ffi 模块分配无符号字符的缓冲区
我正在使用 Node.js 的 ffi 和 ref 模块来创建与codec2 C library的绑定。
这是库标题的一部分:
以下是 C ( c2enc.c ) 中编码的示例实现:
这就是我试图encode
从 JavaScript 代码调用函数的方式:
您能否解释一下如何正确分配数组unsigned char* bits
和数组short
?因为我怀疑我做得对。在参考库文档中,我发现可以分配字符串,但没有关于如何创建一些其他数据类型的数组的参考。
顺便说一句,如果这很重要,我正在使用节点 0.10.26。
javascript - 在 REST API 中处理本机对象
我有一个使用 expressjs 实现的 Web 服务器 api,它在 REST api 处提供用于记录连接到 Web 服务器机器的网络摄像机。
网络摄像头和编码使用 C++ 编写的 dll 处理,互操作使用node-ffi库完成。
我遇到的问题是我在响应中混合了原生 ffi 句柄和 JSON 字符串化。
例如,我有一个Stream
带有原型的类:
哪里Stream.filePtr
将包含一个 ffi 句柄,例如ref.refType(ref.types.void)
然后在我的 expressjs POSTstart
调用中,我执行以下操作:
如您所见,我只是将Stream
对象按原样发送到响应中。这就是我通常实现 REST API 的方式。问题是filePtr
不应真正包含本机句柄,我不确定最佳实践是什么,或者我是否在做一些根本错误的事情?
注意:一般来说,我是 web、nodejs、expressjs 和 javascript 的新手。因此,如果我正在做的事情没有意义或可以做得更好,请指出。
一个更完整的例子: