我用C ++编写了一些类。我用过OOP。现在我想在nodejs中使用这个类。我认为可以通过以下方式完成:
哪些解决方案可行?
注意:我见过nodejs-ffi模块,但它似乎只使用内置方法。这是真的吗?
让我们假设我写了这个:
namespace Math
{
class Aljebra
{
int Abs(int);
}
}
答案 0 :(得分:3)
是的,有可能以你想到的所有方式。
您需要创建C ++类与Nodejs的绑定,请参阅this question或here和here。如果性能不可忽略,您可能会发现this one等问题。无论如何,这是最快的方法。
致电代码?我总是调用一个函数,但如果你想知道如何使用像nodejs-ffi这样的模块,那么将它们与C ++一起使用会很麻烦。所有函数名都在C ++中被破坏,这意味着您的Math::Aljebra::Abs
实际上可能被称为_ZN4Math7Aljebra3AbsEi
,这取决于您使用的编译器。如果您的库主要包含extern "C"
函数,则可以使用。
有很多图书馆可以做到这一点。我更喜欢DBus。您可以使用它与许多系统守护程序进行通信。当然,如果你想将它与你的C ++代码一起使用,你需要编写一个DBus服务来进行通信。
这取决于。如果您无法编译,只需使用现有库,第二个解决方案可能是唯一的解决方案。如果需要在C ++库中相互通信许多nodejs实例,那么第三种解决方案可能会更好。
答案 1 :(得分:0)
我已经单独使用了Node.js和C ++ - 我认为我可以看到Node.js是服务器端语言,而C ++是以非常传统的方式作为客户端。然而,这有点使Node.js作为客户端语言的许多功能无效,这是该语言的“更热”特性之一 - 它可以做到这两点。
此外,我不确定C ++对客户端Web开发的支持。它是一种非常强大的语言,我相信它是可能的......但我想当你想出如何用Node.js实现C ++时,你可以重新编写你想要用C ++调用的函数。在Node.js或其他一些更合适的语言中。