有没有可能在nodejs中使用C ++类?

我用C ++编写了一些类。 我用过OOP。 现在我想在nodejs中使用这个类。 我认为可以这样做:

  1. 在nodejs中创buildC ++类的对象并调用它们的方法。
  2. 调用编译的c ++代码,并获得输出。
  3. 与运行已编译的C ++程序进行交互(类似于IPC的技术)。
  4. 你喜欢的另一种方式。

哪个解决scheme是可行的?

注意:我已经看到了nodejs-ffi模块,但它似乎只使用内置方法。 真的吗?

让我们假设我写了这个:

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

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

  1. 你需要创build你的C ++类到Nodejs的绑定,看到这个问题或者在这里和这里 。 如果性能不是微不足道的,你可能会发现像这样的问题。 无论如何,这是最快的方法。

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

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

  4. 这取决于。 如果你不能编译,只使用现有的库,第二个解决scheme可能是唯一的。 如果需要在C ++库中相互交互多个nodejs实例,则第三种解决scheme可能会更好。

我已经单独使用Node.js和C ++了 – 我提到我可以看到Node.js是服务器端语言,而C ++是客户端的一种非常传统的方式。 但是,这种方式会使Node.js作为客户端语言(这是该语言的“热门”function之一)的强大function,而这种function可以同时实现这两种function。

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