I'm trying to integrate an external C++ library (I have access to the .so file as well as the header files) into my Node.js application.
After a lot of research my options are reduced to:
Writing a Node addon
Use node-ffi
From node-ffi's gitHub's definition I can't tell if it will or will not work directly on C++ libraries:
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.
So the questions I have are:
- Does option 1) imply rewriting in some way the external C++ library?
- Is node-ffi able to call directly to C++ libraries without any kind of C wrapper I'd have to write?
I'm no expert when it comes to C/C++ so if I missed something basic for you to be able to answer please let me know so I can improve my question.
node-ffi seems to be primarily for C programs. I went through this in the last week, and found much better luck with node addons. What you have to do is write a shim between the C++ code in the library and node.js. In my case, I needed to encode and decode packets for a security protocol, so I made node buffers that contained the packets, and wrote C++ code that got the data out of the buffers, then send the data to my C code that encoded and decoded packets.
This page: http://luismreis.github.io/node-bindings-guide/docs/returning.html has some great examples of how to get data in and out of node.js buffers in C++.