node-ffi
Rick Branson rick [at] diodeware [dot] com http://github.com/rbranson/node-ffi
node-ffi is a Node.js addon for loading and calling dynamic libraries using pure JavaScript. It can be used to create bindings to native libraries without writing any C++ code.
WARNING: This is an experimental library with an unstable API. It’s also quite unsafe, so you can pretty easily create situations where you will segfault the interpreter and unless you’ve got C debugger skills, you probably won’t know what’s going on.
var FFI = require("node-ffi"); var libm = new FFI.Library("libm", { "ceil": [ "double", [ "double" ] ] }); libm.ceil(1.5); // 2 // You can also access just functions in the current process by passing a null var current = new FFI.Library(null, { "atoi": [ "int32", [ "string" ] ] }); current.atoi("1234"); // 1234
-
MacOS X or Linux.
-
You will need Node.js installed.
$ npm install node-ffi
$ git clone git://github.com/rbranson/node-ffi.git $ cd node-ffi $ node-waf configure build $ node test.js $ node-waf install
byte Unsigned 8-bit Integer (unsigned char) int8 Signed 8-bit Integer (char) int16 Signed 16-bit Integer (short) uint16 Unsigned 16-bit Integer (unsigned short) int32 Signed 32-bit Integer (int) uint32 Unsigned 32-bit Integer (unsigned int) int64 Signed 64-bit Integer uint64 Unsigned 64-bit Integer float Single Precision Floating Point Number (float) double Double Precision Floating Point Number (double) pointer Pointer Type string Null-Terminated String (char *)
See LICENSE file.