问题标签 [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.

0 投票
1 回答
952 浏览

javascript - 将 JavaScript 回调传递给在另一个线程中调用它的 FFI 函数是否安全?

我有一个 C 函数,它接受一个回调并在另一个线程上调用它:

我想通过 Node-FFI 从 JavaScript 调用这个函数,将一个 JavaScript 函数传递给它:

这是有效的吗?它是线程安全的吗?JavaScript 回调实际在哪个线程中执行:Node.js 主线程,还是在 FFI 库创建的线程中?Node-FFI 是否以某种方式同步调用?

0 投票
2 回答
799 浏览

javascript - 使用 ref 为 StructType 定义双指针?

我正在使用 C 库浏览网络以查找特定硬件。我有一个名为 的结构,EyeTracker其中包含一些属性。

使用 调用库函数EyeTracker**

从头文件(C代码)

您应该使用指针分配足够的内存以适应 x 数量的跟踪器(希望我在这里有意义)。

我的问题是:如何使用javascript,ref和编写上述内容node-ffi

到目前为止,我已经能够获得有关ONE跟踪器的信息。

JavaScript 代码

我需要为numberOfTrackersToGet指向 EyeTracker 类型的 Struct 的指针腾出空间。

ArrayType似乎不起作用。

0 投票
1 回答
1018 浏览

node.js - [Node JS]如何在 windows 10 上安装 'ffi' 和 'ref' 模块

当我运行时:

或者

我收到了这个错误

我安装了 node-gyp、python 2.7.11 和 Visual Studio 构建工具。

有人帮我解决这个问题吗?

0 投票
3 回答
5442 浏览

node.js - 从 nodejs 加载 DlL 时出现错误“动态符号检索错误:Win32 错误 127”

我想从节点 js 加载一个 dll 文件。这是头文件:

在编译为,我选择“编译为 C 代码”

在主动解决方案平台,我选择x64

然后,我使用 ffi 模块来加载它:

但我得到一个错误:

0 投票
1 回答
6993 浏览

javascript - 从 Node-JS 将焦点设置到 Windows 应用程序

我有一个在 Windows 上运行的 NodeJS 应用程序,当用户执行某个操作时,它需要显示并将焦点切换到正在运行的 Windows 应用程序。我一直在使用 node-ffi 包进行 Windows API 调用,但无法使其始终如一地切换焦点。这是我正在使用的代码。它成功获取了正在运行的计算器应用程序的 HWND,但随后尝试将焦点切换到该 HWND,并且它仅在某些情况下有效:

这种命令组合似乎在我尝试过的命令中最一致,但它并不总是有效。如果我想切换焦点的窗口被最小化,它总是会弹出到顶部。如果窗口没有最小化,而只是在另一个窗口的后面,它只会间歇性地显示。我不确定如何始终如一地让正在运行的 Windows 应用程序始终移动到顺序的顶部,即使它当前已最小化。

0 投票
0 回答
120 浏览

node.js - 如何在 NodeJS 中的 websocket 服务器上组合模块 'ffi'、'node-windows'

我想做一个 websocket 服务器。它可以作为windows服务自动运行(我使用模块'node-windows')并加载文件dll(我使用模块'ffi')。

这是文件 server.js 中的代码

这是文件 install.js 中的代码。它将文件 server.js 设置为作为 Windows 服务运行

当我运行它时,我不知道为什么,但是 windows 服务会自动停止。如果我不使用'ffi',服务器将运行良好。任何人都可以帮我解决这个问题吗?

0 投票
1 回答
393 浏览

javascript - 电子窗口处理程序到 ffi c 库

我加载了一个本机库,它期望像这个 C 示例中的窗口处理程序: 在此处输入图像描述

(翻译为英文:Callingexample in C)但是我如何通过节点 ffi 传递电子 NativeWindowHandle 以使用我的 dll。我没有 dll 的源代码,只有德语的描述 pdf。那么我怎样才能通过处理程序?我需要在 ffi 中设置哪种类型作为参数?我在 c# 中拥有的唯一其他信息,如果你导入 dll,你可以像这样传递它:

但是我怎样才能让它在电子/节点 ffi 中工作。

尼尔斯

0 投票
1 回答
99 浏览

node.js - nodejs的模块'ffi'可以读取具有微软功能的dll文件吗?

标题是我的问题。任何人都可以帮助我理解这一点吗?

0 投票
1 回答
571 浏览

c - 使用 nodejs 服务器与 futronic sdk 进行生物特征匹配

我已经使用 futronic sdk 成功地进行了生物特征打印并发布到节点服务器。我希望同样能够使用这个库在服务器中进行匹配,因为这是存储所有用户的生物特征打印的地方。我发现这个node-ffi库有助于定义我导出的等效 C 函数并将其编译为 .dll 文件。

现在这里的挑战是我试图移植这些ftrAnsiSDK函数,但无法将文件ftrScanAPI.dll和文件编译在一起。ftrAnsiSDK.dll它给出了这个错误:

...collect2.exe [Error] ld returned 5 exit status

当我编译和导出不依赖这两个库的函数时,我的代码工作正常,函数很容易导出并在节点服务器中使用。请问有人可以给我一个提示吗?

这是回购的链接。它由所使用的 lib 和 .dll 库组成。

对于服务器代码,这里是我想要实现的一个片段:

HelloWordandPrintErrorMessages是我用作测试用例的方法,以确保在我继续执行主要函数之前导出函数(您可以从 repo 中的代码中看到函数定义..),这取决于futronic lin 和 sdk .

我目前使用的是 64 位操作系统,并且我在 32 位机器上安装了相同的程序,但它仍然没有编译和导出该功能。我使用的代码编辑器是 Dev++C。

任何人都可以帮助甚至给我提示如何实现这一目标吗?

0 投票
1 回答
229 浏览

c - Node FFI 包装函数在同步使用时失败,但异步工作

我正在尝试用 Node FFI 包装一个 Rust 库(它公开一个 C API)。我有以下代码包装了两个函数。一个是返回指针的“构造函数”。另一个接受一个指针并返回 C 字符串。

当我使用响应的异步调用comm_address_to_str是正确的。但是,当我尝试使用同步样式调用该函数时,它会返回垃圾,或者很少会返回正确的结果。以下 nodeunit 测试练习该场景:

我不知道是什么原因造成的,但我需要能够使用同步调用样式。我包装的 Rust 库的 C API 在这里