问题标签 [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.
meteor - Meteor 在客户端与 node-ffi 集成
我可以在客户端使用 Meteor 和 node-ffi ( https://github.com/node-ffi/node-ffi ) 以允许用户在浏览器上加载本机共享库,使浏览器能够运行该库和将结果返回给服务器?在实践中:用户从浏览器访问站点,单击某个地方,加载库库路径,执行库并将结果返回给服务器。
javascript - 使用“node-ffi”时,如何解决“错误:找不到绑定文件。”?
一些细节:
- Mac OSX 10.11.6
- 节点 v6.5.0
npm
v3.10.3nvm
v0.29.0
我最近构建了一个npm
包,它使用ffi
. 该软件包可自行完美运行(使用 构建babel
)。我正在尝试将其集成到概念验证应用程序中,并且在使用bindings
. 我webpack
用来捆绑我的 POC 应用程序,这就是我遇到这个问题的地方。
这是我的webpack.config.js
:
该frontend
任务从这个 Javascript (ES6) 构建一个包:
console.log('This is the frontend calling!!');
简单吧?
该backend
任务从这个 Javascript (ES6) 构建一个包:
stack-vod
我正在使用的包裹在哪里ffi
。
这是package.json
POC 应用程序的文件:
以下是复制问题的步骤:
npm i
npm run build
node ./wp-build/backend.bundle.js
第 1 步工作正常。保存一些警告,安装npm
软件包时没有错误。
步骤 2显示此输出:
步骤 3响应此错误:
我已经尝试了在 SO 和 GH 上找到的大量“修复”,但没有一个奏效。谁能告诉我这里发生了什么以及可以做些什么来解决它?几天来我一直在努力解决这个问题,上周有两个队友也花了几天时间试图弄清楚这一点。
顺便说一句,webpack
这是我团队的要求,因为这最终将用于一个更大的项目electron
,并且webpack
已经被用于在那里构建。所以像“不要使用 webpack”这样的答案不会减少芥末。:)
node.js - 为什么 `node-ffi` 回调返回一个带有 `void *` 的空 Buffer 而不是 `int *`?
我正在使用node-ffi
以下签名实现回调:
底层 C 库void *
使用pData
. 大约一半的回调实际上返回一个int *
值,而另一半pData
是更复杂的数据(即Struct
)。最终ref.get(pData)
成为null
. 如果我将Callback
定义更改为使用int *
而不是void *
,ref.get(pData)
则返回正确的值。我无法弄清楚为什么void *
最终是一个大小为 0 的 Buffer不能正确取消引用(即使pData
是int *
)。
我觉得我错过了一些东西,但我一辈子都看不到那会是什么。任何人都可以帮忙吗?
node.js - Webpack 因 Node FFI 和 Typescript 失败 - 动态需要错误
在一个简单的 Typescript 程序中,我require
使用 Node FFI
进而
通过 webpack 将其链接起来
问题似乎是 FFI 具有动态性require
,并且修复似乎是webpack.ContextReplacementPlugin
在webpack.config.js
文件中应用。
这有点超出我的能力范围,但 Angular 案例的一个例子是:
知道如何为 FFI 执行此操作吗?
javascript - 使用c ++中的构造函数时ffi的返回类型是什么
最近,我正在研究在 JavaScript 中使用 c++ 函数,我选择了 nodejs 的 ffi 插件。但是我不知道如何在JS中编写一个c++类构造函数的返回类型。
我的 C++ 代码看起来像这样
我的js代码看起来像这样
我尝试使用结构“RectangleType”和指针“RectanglePtrType”,但它们都导致类型错误。我在谷歌找到的所有结果都是关于 LuaJIT 而不是 nodejs。
如果没有我们可以在 Js 中用于 c++ 构造函数的返回类型,我可以在 JS 中创建一个 Rectangle 对象吗?
node.js - ref.NULL 和 ref.NULL_POINTER 有什么区别?
Node.js 库 'ref' 有两个预定义对象 NULL 和 NULL_POINTER,它们映射到相同的概念(C/C++ 空指针)。两者都是 Buffer 对象,文档实际上并没有解释它们之间的区别。
ref.NULL 对象和 ref.NULL_POINTER 对象有什么区别?你打算什么时候使用一个与另一个?
node.js - GetCursorPos 节点 FFI - 如何通过 ref 获取指针返回
我编写了以下代码来设置键盘光标位置。但是捡垃圾。任何线索,我错过了什么?
接下来,我尝试了以下方法,但效果不佳。
javascript - NW.js - 重新加载页面时“模块未自行注册”
我第一次运行我的 NW.js 应用程序时,模块加载时没有错误(并且可以正常工作)。如果我刷新页面(CTRL+R、F5 或 SHIFT+F5),我会收到错误:Module did not self-register
. 这仅在需要ffi
或ref
需要时发生。
在 Electron 中它可以正常工作。
有任何想法吗?
这是完整的错误输出:
electron - 如何从电子要求本机节点模块?使用 ref 和 ffi 模块出错
当我在我的 js 代码中需要“ref”模块并通过节点运行时,我得到了所需的输出。但是当我通过在 package.json 中提供必要的更改来通过电子运行相同的 js 代码时,它会说“找不到绑定文件..”
这是我的 package.json 文件
这是我的 index.js 文件
当我启动项目“npm start”而不需要“ref”时,我没有收到任何错误。但是当我使用 ref 时,它会引发错误。
PS主要要求是“ffi”模块,我已经完成了运行“ffi”所需的必要更改。“ffi”实习生需要“ref”,这样当我通过节点运行包含 ref 的代码时,它可以完美运行..
node.js - 如何使用带有 `ffi`、`ref-struct` 和 `ref-array` 的复杂数据结构?
我正在开发一个用于ffi
与已编译的 C 库进行交互的项目。我试图让一些复杂的数据结构工作,并且在找出在这些数据结构中获取值的正确方法时遇到问题。我有两个例子我想弄清楚。我不是C 人,所以我在这方面发挥了作用。
实例 1
有一个 Cstruct
包含一些属性,这些属性看起来像指向字符数组的指针。这是定义的 C 代码struct
:
现在,我已经能够成功提取E_CALL_STATE
值和属性,BOOL
但我很难将字符串存储在cPhoneNumber
、cName
、cCallId
和cPreviousCallId
. 这是我使用它进行设置的方式ref-struct
:
这是解释这一点的Javascript struct
(供参考,RPC_CALL_STATE
是外部定义的enum
):
如果我查看存储在 上的值callProgressStruct.cPhoneNumber
,我会得到0
。所以,有几个问题:
- 在这里使用什么是正确
ref.types
的?- 是否
char
正确? - 如果不是,这应该是什么?
- 是否
- 如何提取存储在中的实际字符串值
cPhoneNumber
? - 有没有办法在
ref-array
这里使用?
实例 2
我有一个struct
这样定义的C:
在这段代码中,*pDevices
最终成为一个AUDIO_OS_DEVICE
结构数组。这些结构在 C 中定义为:
在 Javascript 我有这个设置使用ref-struct
:
我不知道pDevices
要在这里转换什么类型,也不知道如何提取AUDIO_OS_DEVICE
结构数组。我也遇到了已经用字符数组描述的问题。
任何帮助,将不胜感激。在我弄清楚这一点之前,我处于死胡同。