如何使用节点ffi调用C ++代码

我正在写一个数据采集应用程序,但是我没有一个传统的无聊的前端,我已经负责把Web 2.0的前端,我听说Node.js擅长调用C ++代码,但是因为我得到我应该考虑把我的DLL链接到我的前端的阶段,我碰到了一堵砖墙。

我知道我可以在本地编写代码而不使用诸如node-ffi之类的附加内容,但坦率地说,使用Google的V8语法执行这些绑定的语法看起来相当复杂,因此我猜ffi是最简单的方法处理这个(事情。

我知道之前有一个预先的问题,并且在这里有一个答案,但是我仍然对如何编写填充程序以允许我从节点调用C ++ dll有点不安。

我有以下C ++头文件:

#include "NIDAQmx.h" #include <string> using std::string; namespace DAQReaderDll { class DAQReader { private: int32 m_read; int32 m_error; TaskHandle m_handle; bool m_isRunning; char m_errBuff[2048]; public: __declspec(dllexport) DAQReader(); __declspec(dllexport) ~DAQReader(); __declspec(dllexport) void startDevice(); __declspec(dllexport) void stopDevice(); __declspec(dllexport) float32 getSample(); __declspec(dllexport) bool isRunning(); __declspec(dllexport) string getError(); }; // Used inside the DLL int SAMPLE_SIZE = 1000; int READ_SPEED = 1000; int AS_PSI = 2980; } 

我假设我不需要提供我的.cpp文件的实现细节,但是我想知道的是如何让这些方法对node.js可见,以及如何将它们包装在node-ffi中?

我也担心,我可能有问题链接这个DLL到前端,因为我的.dll依赖于NIDAQmx .dll,这将导致问题进一步下行pipe道?