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

Is it possible to use C++ classes in nodejs?

本文关键字:c++ nodejs 是否      更新时间:2023-10-16

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

  1. 在nodejs中创建c++类的对象并调用它们的方法。
  2. 调用编译后的c++代码,得到输出。
  3. 与运行编译的c++程序交互(类似IPC的技术)。

哪些解决方案是可行的?

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

让我们假设我写了这个:

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

是的,你能想到的所有方法都是可能的。

  1. 你需要创建c++类到Nodejs的绑定,参见这个问题或这里和这里。如果性能不容忽视,您可能会发现类似的问题。无论如何,这是最快的方法。

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

  3. 有很多库可以做到这一点。我更喜欢DBus。您可以使用它与许多系统守护进程通信。当然,如果您想在c++代码中使用它,则需要编写用于通信的DBus服务。

  4. 依赖。如果您不能编译,只需使用现有的库,第二个解决方案可能是唯一的一个。如果需要在c++库中相互通信许多nodejs实例,第三种解决方案可能更好。

我已经分别使用Node.js和c++了——我想我可以把Node.js看作是服务器端语言,而c++是以一种非常传统的方式作为客户端语言。然而,这在某种程度上削弱了Node.js作为客户端语言的强大功能,这是该语言"最热门"的特性之一——它可以同时做这两件事。

另外,我不确定c++对客户端web开发的支持。这是一门如此强大的语言,我相信这是可能的……但我认为当你弄清楚如何用Node.js实现c++时,你可以用Node.js或其他更合适的语言重写你想在c++中调用的函数。