Articles of node ffi

node-ffi:dynamic链接错误

我有一个C ++方法(哪个angular色正在杀死一些进程),在一个库Risk.dll中。 另一方面,我正在开发一个在Google Chrome上运行的networking应用程序(使用Nodejs和AngularJS)。 当我通过浏览器单击button时,我希望能够通过我的app.js文件调用C ++函数。 我决定使用Node-ffi,但是我有错误: Error: Dynamic Linking Error: "Risk.dll": 这是我在javascript上的代码: var ffi = require('ffi') //Kill Server socket.on('killserver', function(date){ var cTest = ffi.Library("Risk", { "DateModified":["long", ["string"] ] }); var res = cTest.DateModified(date); console.log(res) }); 在C ++中,我已经完成了 extern C{ } 而我想补充一点,我的文件Risk.dll与文件server.js在同一个文件中,当我想要使用我的应用程序时,我使用Node运行。 任何线索?

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

我有一个在Windows上运行的NodeJS应用程序,当用户执行特定操作时,需要显示并将焦点切换到正在运行的Windows应用程序。 我一直在使用node-ffi包进行windows API调用,但一直无法使焦点切换。 这是我正在使用的代码。 它成功地得到了正在运行的Calculator应用程序的HWND,但是随后尝试将焦点切换到该HWND,并且它仅在有时才起作用: var ffi = require('ffi'); var intPtr = ref.refType('long'); var user32 = new ffi.Library('user32', { 'FindWindowA': ['long', [ 'string', 'string']], 'SetForegroundWindow': ['bool', ['long']], 'BringWindowToTop': ['bool', ['long']], }); var winToSetOnTop = user32.FindWindowA(null,"calculator") var res = user32.ShowWindow(winToSetOnTop, 9); res = user32.SetForegroundWindow(winToSetOnTop); res = user32.BringWindowToTop(winToSetOnTop); 这些命令的组合似乎与我所尝试过的最一致,但并不一直工作。 如果我想要将焦点切换到最小的窗口,它将始终popup到顶部。 如果窗口不是最小化的,而是在另一个窗口的后面,它将只会间歇显示。 我不知道如何始终如一地让运行的Windows应用程序始终移动到订单的顶部,即使它当前已经最小化了。

使用节点js的pAnisChar调用Delphi stdcall函数

我有一个传统的Delphi DLL需要一个JSONstring作为input(pAnsiChar),并返回一个int作为成功或失败。 我设法使用node-ffi从nodejs连接到dll。 但是,我正在返回int值的值无效的jsonstring。 有人能指出我如何调用一个delphiDLL与pAnsiChar作为节点的函数参数 谢谢

是否有可能使用ref-struct和ref-array创build一个结构数组?

我正在使用node-ffi来调用一个将outparam作为指针指向结构数组的指针的函数。 有没有办法使用ref-struct和ref-array来访问我所得到的数组? struct = require("ref-struct"); var rect_type = struct({ 'x': 'int', 'y': 'int', 'width': 'int', 'height': 'int', }); var rotation_type = struct({ 'yaw': 'short', 'pitch': 'short', 'roll': 'short' }); var face_type = struct({ 'rect' : rect_type, 'rotation' : rotation_type, 'confidence' : 'double' }); 我能够得到第一个结构,在函数调用后的指针,但我无法得到数组的其余部分: var mylib = ffi.Library('lib/libN', { 'GetFaces' : [ 'int', [ 'pointer' […]

是否有可能创build一个node.js模块使用c库monetdb连接?

我正在尝试连接monetdb与monetdb 我有一个简单的(20行)c程序,可以使用mapi库查询moentdb 。 我可以使用这些库来构buildnode.js (module / addon),它使用这些库并连接到monetdb ? (使用odbc是一个选项,但它有它自己的缺点。) 更新1: node-ffi非常棒。 我能够很容易地创build一个表格程序。 (例如,我已经添加了我的工作代码。) 所以如果我有3个选项 1. ODBC 2.节点-ffi 3. ac程序获取数据库数据并通过socket监听来自node.js的连接 就性能而言这是更好的select,如果我没有多less时间开发node.js的插件 var ffi = require("ffi"); var libmylibrary = ffi.Library('/usr/local/lib/libmapi.so', { "mapi_connect":["int",["string",'int',"string","string","string","string"]], "mapi_query":['int',["int","string"]], "mapi_fetch_row":["int",["int"]], "mapi_fetch_field":["string",["int","int"]] }); var res = libmylibrary.mapi_connect("localhost", 50000,"monetdb", "monetdb", "sql", "demo"); console.log(res); var ret=libmylibrary.mapi_query(res,"select * from table"); while(libmylibrary.mapi_fetch_row(ret)){ console.log(libmylibrary.mapi_fetch_field(ret,0)); console.log(libmylibrary.mapi_fetch_field(ret,1)); } 更新2: 以上代码不推荐用于生产…它不使用node.js的asynchronousfunction,所以请使用它的婴儿步骤

从Node.js调用C ++库(Node addons / node-ffi)

我正在尝试将外部C ++库(我可以访问.so文件以及头文件)集成到我的Node.js应用程序中。 经过大量的研究,我的select被缩减为: 编写一个节点插件 使用node-ffi 从node-ffi的gitHub的定义,我不能确定它会或不会直接在C ++库上工作: node-ffi是一个用于使用纯JavaScript加载和调用dynamic库的Node.js插件。 它可以用来在不编写任何C ++代码的情况下创build与本地库的绑定。 所以我的问题是: 选项1)是否意味着以某种方式重写外部C ++库? node-ffi是否能够直接调用C ++库,而不需要任何forms的C封装器? 我不是C / C ++的专家,所以如果我错过了一些基本的东西可以回答,请让我知道,这样我可以改善我的问题。

C语言分析器在Javascript中

我想用JavaScriptparsingC头文件。 有没有这样的图书馆? 否则,任何提示,以帮助我开始? 更新:我的最终目标是自动为node-ffi构build接口。 parsing器不一定必须使用Javascript,只要它可以吐出Javascript可以理解的格式即可。 如果我自己很难发展,我可能不得不采用现成的解决scheme…?

Node-webkit WinAPI

我正在为Windows(Vista,7,…)开发简单的node-webkit应用程序,我需要使用一些WinAPI函数,特别是RegisterHotKey和SendInput来绑定系统范围的热键,并根据这些热键进行击键。 没有node-webkit提供的API,所以我想用node-ffi来调用这个函数。 我是WinAPI开发新手,所以我已经阅读了一些MSDN手册,但是发现大部分示例都创build窗口,消息循环,消息处理过程等等。 所以我不太明白,如何实现从node-webkit正确调用WinAPI,而不创build单独的窗口? Node-ffi教程不包括这种情况,所以我find了节点Windows库,但似乎只是通过节点来实现Windows应用程序。 有没有办法实现本地调用而不创buildWindows应用程序? 什么是正确的方法来做到这一点?

node-ffi与节点扩展以访问现有的C ++function

我有一些现有的C ++代码在独立的C ++应用程序中进行数字处理。 我现在想在新的node.js应用程序中使用该代码。 研究如何从node.js访问C ++代码,有两个选项: 编写一个node.js扩展 使用node-ffi 节点ffi似乎是一个很好的select来访问现有的库 ,但我正确的想法,如果我使用node-ffi我将不得不写一个C封装,使我的C ++可访问? (这是我可以通过Visual Studio在Windows上运行的简单testing用例的唯一方法)。 对于我的情况,我的源代码已经在C ++中,而不是C,在上面两个选项之间进行select时需要考虑什么?

未被捕获的错误:模块没有自注册

我试着用nw.js(v0.12.0-alpha2)来使用node-vlc。 当我启动我的应用程序没有nw.js它的作品,但是当我启动与nw.js我得到一个错误: Uncaught Error:Module did not self-register。“,来源:/home/alexis/Bureau/dev/jukebox/node_modules/vlc/node_modules/ffi/node_modules/bindings/bindings.js(84) 我用nw-gyp尝试了一些命令,但是它不能帮助我。 我在Ubuntu 14,64位。