是否可以在nodejs中使用c++类?
Is it possible to use C++ classes in nodejs?
我用c++写过一些类。我使用了OOP。现在我想在nodejs中使用这些类。我认为可以这样做:
- 在nodejs中创建c++类的对象并调用它们的方法。
- 调用编译后的c++代码,得到输出。
- 与运行编译的c++程序交互(类似IPC的技术)。
哪些解决方案是可行的?
注意:我已经看到nodejs-ffi模块,但它似乎只使用内置方法。这是真的吗?
让我们假设我写了这个:
namespace Math
{
class Aljebra
{
int Abs(int);
}
}
是的,你能想到的所有方法都是可能的。
-
你需要创建c++类到Nodejs的绑定,参见这个问题或这里和这里。如果性能不容忽视,您可能会发现类似的问题。无论如何,这是最快的方法。
-
调用代码?我总是调用函数,但是如果你想知道如何使用像nodejs-ffi这样的模块,那么在c++中使用它们是一个很大的痛苦。在c++中,所有的函数名都是混乱的,这意味着你的
Math::Aljebra::Abs
实际上可能被称为_ZN4Math7Aljebra3AbsEi
,这取决于你使用的编译器。如果你的库主要包含extern "C"
函数,可用 -
有很多库可以做到这一点。我更喜欢DBus。您可以使用它与许多系统守护进程通信。当然,如果您想在c++代码中使用它,则需要编写用于通信的DBus服务。
-
依赖。如果您不能编译,只需使用现有的库,第二个解决方案可能是唯一的一个。如果需要在c++库中相互通信许多nodejs实例,第三种解决方案可能更好。
我已经分别使用Node.js和c++了——我想我可以把Node.js看作是服务器端语言,而c++是以一种非常传统的方式作为客户端语言。然而,这在某种程度上削弱了Node.js作为客户端语言的强大功能,这是该语言"最热门"的特性之一——它可以同时做这两件事。
另外,我不确定c++对客户端web开发的支持。这是一门如此强大的语言,我相信这是可能的……但我认为当你弄清楚如何用Node.js实现c++时,你可以用Node.js或其他更合适的语言重写你想在c++中调用的函数。
- NodeJs 服务器充斥着 UDP 广播,不发送响应
- 在nodejs中使用本机代码的最佳方法是什么?
- 不将数据 socket.io c++(客户端)发送到 nodejs(服务器)socket.io
- NodeJS:node-gyp 编译与等效的 gcc -lm 选项
- 在 NodeJS 异步调用C++ DLL
- 与纯 V8 相比,NodeJS 是否有任何性能缺陷或显著开销?
- 将数据从 OpenCV C++传递到 NodeJS/JS |电子
- 使用自定义 nodejs 插件时的"The specified module could not be found"
- 将数据包从C++服务器发送到NodeJs服务器时出现MessagePack解码错误
- nodejs的c++插件中应有的类名
- 使用节点插件api将C库回调传递给NodeJS EventEmitter
- 通过n-api在nodejs中使用多个cpp文件
- 重新实现在nodejs中使用SHA2的旧c ++项目?
- 将 nodejs 脚本作为子进程执行(而不是从其他脚本执行)
- 具有 NodeJS 订阅者的 ZMQ 发布服务器
- 如何将自定义C++模块集成到自定义版本的 NodeJS 中?
- 调试 nodejs nbind c++ 插件
- 如何传播 NodeJS 包装C++代码的函数故障?
- nodejs addon async callback with libuv
- 为什么 NodeJS C/C++ 插件比纯 C 更快