问题标签 [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.
javascript - 将 JavaScript 回调传递给在另一个线程中调用它的 FFI 函数是否安全?
我有一个 C 函数,它接受一个回调并在另一个线程上调用它:
我想通过 Node-FFI 从 JavaScript 调用这个函数,将一个 JavaScript 函数传递给它:
这是有效的吗?它是线程安全的吗?JavaScript 回调实际在哪个线程中执行:Node.js 主线程,还是在 FFI 库创建的线程中?Node-FFI 是否以某种方式同步调用?
javascript - 使用 ref 为 StructType 定义双指针?
我正在使用 C 库浏览网络以查找特定硬件。我有一个名为 的结构,EyeTracker
其中包含一些属性。
使用 调用库函数EyeTracker**
。
从头文件(C代码):
您应该使用指针分配足够的内存以适应 x 数量的跟踪器(希望我在这里有意义)。
我的问题是:如何使用javascript
,ref
和编写上述内容node-ffi
?
到目前为止,我已经能够获得有关ONE跟踪器的信息。
JavaScript 代码
我需要为numberOfTrackersToGet
指向 EyeTracker 类型的 Struct 的指针腾出空间。
ArrayType
似乎不起作用。
node.js - 从 nodejs 加载 DlL 时出现错误“动态符号检索错误:Win32 错误 127”
我想从节点 js 加载一个 dll 文件。这是头文件:
在编译为,我选择“编译为 C 代码”
在主动解决方案平台,我选择x64
然后,我使用 ffi 模块来加载它:
但我得到一个错误:
javascript - 从 Node-JS 将焦点设置到 Windows 应用程序
我有一个在 Windows 上运行的 NodeJS 应用程序,当用户执行某个操作时,它需要显示并将焦点切换到正在运行的 Windows 应用程序。我一直在使用 node-ffi 包进行 Windows API 调用,但无法使其始终如一地切换焦点。这是我正在使用的代码。它成功获取了正在运行的计算器应用程序的 HWND,但随后尝试将焦点切换到该 HWND,并且它仅在某些情况下有效:
这种命令组合似乎在我尝试过的命令中最一致,但它并不总是有效。如果我想切换焦点的窗口被最小化,它总是会弹出到顶部。如果窗口没有最小化,而只是在另一个窗口的后面,它只会间歇性地显示。我不确定如何始终如一地让正在运行的 Windows 应用程序始终移动到顺序的顶部,即使它当前已最小化。
node.js - 如何在 NodeJS 中的 websocket 服务器上组合模块 'ffi'、'node-windows'
我想做一个 websocket 服务器。它可以作为windows服务自动运行(我使用模块'node-windows')并加载文件dll(我使用模块'ffi')。
这是文件 server.js 中的代码
这是文件 install.js 中的代码。它将文件 server.js 设置为作为 Windows 服务运行
当我运行它时,我不知道为什么,但是 windows 服务会自动停止。如果我不使用'ffi',服务器将运行良好。任何人都可以帮我解决这个问题吗?
node.js - nodejs的模块'ffi'可以读取具有微软功能的dll文件吗?
标题是我的问题。任何人都可以帮助我理解这一点吗?
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 库组成。
对于服务器代码,这里是我想要实现的一个片段:
HelloWord
andPrintErrorMessages
是我用作测试用例的方法,以确保在我继续执行主要函数之前导出函数(您可以从 repo 中的代码中看到函数定义..),这取决于futronic lin 和 sdk .
我目前使用的是 64 位操作系统,并且我在 32 位机器上安装了相同的程序,但它仍然没有编译和导出该功能。我使用的代码编辑器是 Dev++C。
任何人都可以帮助甚至给我提示如何实现这一目标吗?
c - Node FFI 包装函数在同步使用时失败,但异步工作
我正在尝试用 Node FFI 包装一个 Rust 库(它公开一个 C API)。我有以下代码包装了两个函数。一个是返回指针的“构造函数”。另一个接受一个指针并返回 C 字符串。
当我使用响应的异步调用comm_address_to_str
是正确的。但是,当我尝试使用同步样式调用该函数时,它会返回垃圾,或者很少会返回正确的结果。以下 nodeunit 测试练习该场景:
我不知道是什么原因造成的,但我需要能够使用同步调用样式。我包装的 Rust 库的 C API 在这里。