3

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

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

这些解决方案中哪一个是可行的?

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

让我们假设我已经写了这个:

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

2 回答 2

3

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

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

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

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

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

于 2013-01-22T17:30:25.550 回答
1

我已经分别使用了相当多的 Node.js 和 C++——我想我可以将 Node.js 视为服务器端语言,而 C++ 则以非常传统的方式作为客户端。然而,这在某种程度上抵消了 Node.js 作为客户端语言的许多功能,这是该语言的“热门”特性之一——它可以同时做到这两者。

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

于 2013-01-22T14:11:10.540 回答