是否可以在nodejs中使用C ++类?

时间:2013-01-22 14:04:17

标签: c++ node.js

我用C ++编写了一些类。我用过OOP。现在我想在nodejs中使用这个类。我认为可以通过以下方式完成:

  1. 在nodejs中创建C ++类的对象并调用它们的方法。
  2. 调用已编译的c ++代码,并获取输出。
  3. 与正在运行的已编译C ++程序(IPC类技术)进行交互。
  4. 您喜欢的另一种方式。
  5. 哪些解决方案可行?

    注意:我见过nodejs-ffi模块,但它似乎只使用内置方法。这是真的吗?

    让我们假设我写了这个:

    namespace Math
    {
        class Aljebra
        {
            int Abs(int);
        }
    }
    

2 个答案:

答案 0 :(得分:3)

是的,有可能以你想到的所有方式。

  1. 您需要创建C ++类与Nodejs的绑定,请参阅this questionherehere。如果性能不可忽略,您可能会发现this one等问题。无论如何,这是最快的方法。

  2. 致电代码?我总是调用一个函数,但如果你想知道如何使用像nodejs-ffi这样的模块,那么将它们与C ++一起使用会很麻烦。所有函数名都在C ++中被破坏,这意味着您的Math::Aljebra::Abs实际上可能被称为_ZN4Math7Aljebra3AbsEi,这取决于您使用的编译器。如果您的库主要包含extern "C"函数,则可以使用。

  3. 有很多图书馆可以做到这一点。我更喜欢DBus。您可以使用它与许多系统守护程序进行通信。当然,如果你想将它与你的C ++代码一起使用,你需要编写一个DBus服务来进行通信。

  4. 这取决于。如果您无法编译,只需使用现有库,第二个解决方案可能是唯一的解决方案。如果需要在C ++库中相互通信许多nodejs实例,那么第三种解决方案可能会更好。

答案 1 :(得分:0)

我已经单独使用了Node.js和C ++ - 我认为我可以看到Node.js是服务器端语言,而C ++是以非常传统的方式作为客户端。然而,这有点使Node.js作为客户端语言的许多功能无效,这是该语言的“更热”特性之一 - 它可以做到这两点。

此外,我不确定C ++对客户端Web开发的支持。它是一种非常强大的语言,我相信它是可能的......但我想当你想出如何用Node.js实现C ++时,你可以重新编写你想要用C ++调用的函数。在Node.js或其他一些更合适的语言中。