问题标签 [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 回答
479 浏览

c++ - Node-ffi 绑定到以 NULL 结尾的 C 字符串数组,但得到“分段错误:11”

我正在使用 Node-ffi 为MITIE编写节点绑定。但我有问题,

函数的参数是char**:一个以 NULL 结尾的 C 字符串数组,如下所示:

这就是我使用 ffi 所做的:

但我得到了:Segmentation fault: 11

我将示例代码上传到了这个 repo

在这个 repo 中你还可以看到我用ctypes写了一个 Python 绑定,它运行良好。

这是我的运行环境:

  • npm@3.10.10
  • 节点@7.10.0
  • 达尔文 x64 17.0.0
  • MacBook Pro(13 英寸,2016 年,四个雷雳 3 端口)
  • macOS 10.13
0 投票
0 回答
877 浏览

c++ - 使用 node-ffi 处理 char*

我正在使用 node-ffi 加载一个库并调用一个返回 char* 的函数,该指针是在共享库中创建的。

我是否需要创建一个可以删除缓冲区的匹配函数?例如

主文件

测试.js

当我尝试这个时,我遇到了段错误。node-ffi 会自动创建副本吗?我应该如何正确地做到这一点?

0 投票
0 回答
50 浏览

javascript - 节点在尝试从 cpp dll 获取超过 500kb 的文本/json 数据时崩溃

//cpp代码

//节点代码

我可以获得更多的 1 mb 数据吗?如果没有,还有其他方法可以得到吗?

0 投票
0 回答
345 浏览

node.js - 使用 fastcall 访问 c++ 库的问题。(javascript、nodejs、外函数接口)

我尝试使用 fastcall,这是我第一次使用 fastcall 和外部函数接口,我尝试加载 datatable.dll 它抛出错误,尝试传递所有可能的库路径(绝对和相对)。使用 nodejs、fastcall、javascipt

我收到的错误是

0 投票
1 回答
224 浏览

node.js - DLL返回中文字符时node-ffi回调错误 *

我有一个 DLL,声明如下:

DLL下载:<a href="https://drive.google.com/file/d/13JinraIr3N_6V_VrIfgHyB4_jW2V1s0f/view?usp=sharing" rel="nofollow noreferrer">32位dll文件(谷歌驱动下载)

dll文件运行良好,使用QT加载并转换数据时使用local8bit

我使用 node.js 和 node-ffi 来加载它

我的环境:Windows7 64bit / Node.js 32bit

运行代码,“sorry”字符串前的������˼��������是中文

在此处输入图像描述

我该怎么办,或者将其转换为显示正确,谢谢。

0 投票
1 回答
609 浏览

javascript - Node-ffi 为 C 函数抛出“未定义符号”错误

我正在尝试使用 node-ffi 在 NodeJs中使用redir 。

这是我的redir.js

我通过做编译./autogen.sh && ./configure && ./make并生成redir可执行文件。我不得不将它重命名为,redir.so因为 node-ffi 一直放在.so文件的末尾

这是我做的时候得到的node redir.js

它无法找到该target_init功能。我相信我做的一切都很好。可能是函数签名错误(我使用了错误的类型)还是意味着确实没有名称为函数target_init

更新:

我试图将它专门编译成一个共享库:

但是找不到的问题target_init依然存在

0 投票
1 回答
1852 浏览

javascript - 指向结构的节点 ffi 指针

首先,我在这里问是因为对于节点 ffi 中指针的使用没有一个快速的答案,也没有关于指向结构的指针,这会有所帮助

这是我的节点 ffi:

下面以 target_init 的签名为例:

这是我得到的:

我正在使用https://github.com/troglobit/redir/blob/master/redir.c并编译gcc -shared -fpic redir.c -o libredir.so

我怀疑这是一个问题,struct_sockaddr_in但一切似乎都很好。我什至尝试像在https://github.com/node-ffi/node-ffi/wiki/Node-FFI-Tutorial#structs中那样做:

但现在我明白了

0 投票
1 回答
247 浏览

javascript - 如何将 ffi 连接到 node-webkit(nwjs)?

所以,我尝试在我的 node-webkit(nwjs) 应用程序中使用 ffi,但我的代码不起作用。有我的 index.html 文件:

很有趣的是我的脚本不起作用然后我尝试写这一行

var ffi = 需要('ffi');

而且无论我尝试在这条线之后运行什么,它都不起作用......

所以,在我翻遍了所有的互联网之后,我发现我需要以某种方式使用 nw-gyp。首先,我在我的项目文件夹中运行这个命令

npm 安装 ffi

然后我转到文件夹 ./node_modules/ffi 并尝试运行此命令:

nw-gyp 重建 --target=0.30.0 --arch=x64

我在控制台中有什么:

请帮帮我!

0 投票
1 回答
1221 浏览

c++ - 将节点 js 代码集成到 cpp 库时出错

我正在尝试使用node-ffi库来调用 cpp 代码。

CPP代码

这用于

我正在通过以下node-ffi javascript 代码使用上面的 cpp 代码

该函数调用如下

我正在尝试使用

我收到以下错误:

TypeError:错误设置参数 10 - writePointer:缓冲区实例应为 Object.writePointer (/Users/..../node_modules/ref/lib/ref.js:742:11) 的 TypeError (native) 的第三个参数。在 Object.alloc (/Users/.../node_modules/ffi/lib/ref.js:516:13) 处设置 (/Users/.../node_modules/ffi/ref/lib/ref.js:484:13) ) 在 Object.lib.Init (/Users/.../src/Lib.js) 的 Object.proxy [as Init] (/Users/.../node_modules/ffi/lib/_foreign_function.js:50:22) :130:26)

0 投票
1 回答
623 浏览

c++ - c++ 文件指针的 N​​ode-FFI 引用类型是什么?

我不知道在这种情况下使用哪种“参考”模块类型。

我有一个 DLL 函数,它返回一个布尔值并将文件指针作为参数:

和 Node-FFI 绑定:

“GB_Build”函数创建一个 json 文件,并根据文件是否创建返回一个布尔值。fname 代表“文件名”,是 DLL 内 C++ 代码中的 C++ nullptr。

我想知道在 Node-FFI 中正确传递文件指针的 ref.type 是什么。我尝试过空指针、空指针、字符串和对象,但是当我在客户端代码中尝试此操作时,它们都会使应用程序崩溃:

感谢您的任何帮助。我在 stackoverflow 上找不到关于 Node-FFI 中文件指针的另一个问题。