有没有可能在nodejs中使用C ++类?
我用C ++编写了一些类。 我用过OOP。 现在我想在nodejs中使用这个类。 我认为可以这样做:
- 在nodejs中创buildC ++类的对象并调用它们的方法。
- 调用编译的c ++代码,并获得输出。
- 与运行已编译的C ++程序进行交互(类似于IPC的技术)。
- 你喜欢的另一种方式。
哪个解决scheme是可行的?
注意:我已经看到了nodejs-ffi模块,但它似乎只使用内置方法。 真的吗?
让我们假设我写了这个:
namespace Math { class Aljebra { int Abs(int); } }
是的,这可以用你想到的所有方式。
-
你需要创build你的C ++类到Nodejs的绑定,看到这个问题或者在这里和这里 。 如果性能不是微不足道的,你可能会发现像这样的问题。 无论如何,这是最快的方法。
-
调用代码? 我总是调用一个函数,但是如果你想知道如何使用像nodejs-ffi这样的模块,那么在C ++中使用它们是一个很大的麻烦。 所有的函数名都是C ++的,这意味着你的
Math::Aljebra::Abs
可能实际上被称为_ZN4Math7Aljebra3AbsEi
,这取决于你使用的编译器。 如果你的库包含大部分extern "C"
函数,可用。 -
有很多图书馆这样做。 我更喜欢DBus 。 您可以使用它与许多系统守护进程进行通信。 当然,如果你想用你的C ++代码,你需要编写一个DBus服务来进行通信。
-
这取决于。 如果你不能编译,只使用现有的库,第二个解决scheme可能是唯一的。 如果需要在C ++库中相互交互多个nodejs实例,则第三种解决scheme可能会更好。
我已经单独使用Node.js和C ++了 – 我提到我可以看到Node.js是服务器端语言,而C ++是客户端的一种非常传统的方式。 但是,这种方式会使Node.js作为客户端语言(这是该语言的“热门”function之一)的强大function,而这种function可以同时实现这两种function。
另外,我不确定C ++对客户端Web开发的支持。 这是一个强大的语言,我相信它是可能的…但是我想当你想出如何用Node.js来实现C ++的时候,你可能会重新编写你想用C ++调用的函数在Node.js或其他一些更合适的语言。