如何使用Node ffi调用C ++代码

时间:2015-07-23 08:36:52

标签: c++ node.js dll node-ffi

我正在编写一个Data Aquisition应用程序,但我没有使用传统的无聊前端,而是负责将Web 2.0前端放在其上,我听说Node.js善于调用C ++代码,但是因为我到了我应该考虑将我的DLL链接到我的前端的阶段,我已经碰到了一堵砖墙。

我知道我可以在不使用诸如node-ffi之类的添加的情况下原生编写代码,但坦率地说,使用Google的V8语法执行这些绑定的语法似乎相当复杂,因此我和#39;猜测ffi是解决这个问题的最简单方法。

我知道之前已经提出了一个问题并且有一个答案here但是我仍然对如何编写垫片以允许我从节点调用我的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,这是否会导致管道下方出现问题?

0 个答案:

没有答案