Javascript C++ binding?

Javascript C++ binding?

本文关键字:binding C++ Javascript      更新时间:2023-10-16

我有一些C++代码,我想向 Web 应用程序的客户端公开。 理想情况下,我想为我的C++类编写 Javascript 包装器对象,以便我可以在客户端使用它们。

以前做过吗?有没有人有链接来展示如何实现这一目标?

有一个库可以将C++代码转换为javascript,它可能会有所帮助:Emscripten

Libjspp C++基于模板的包装器,用于嵌入和扩展 Javascript 引擎 蜘蛛猴 1 . 8 . 5 及以上

SpiderMonkey?是Mozilla Project的Javascript/ECMAScript引擎。

Libjspp 允许C++开发人员简单轻松地将 SpiderMonkey? 嵌入到他们的应用程序中。Libjspp 允许在同一进程中运行多个 Javascript 引擎,每个线程适合一个引擎,这有助于实现真正的视差。此外,Libjspp 无法阻止用户在引擎中运行多个线程。

http://code.google.com/p/libjspp/

我想RPC就是你想要的。您需要使用某种框架在服务器端包装函数。我还没有使用它,但这个看起来很有希望。

在客户端,使用代理对象来调度函数调用。通信通常通过XML-RPC或JSON-RPC处理。我使用了这个客户端框架并且非常满意,但我相信你会发现许多其他框架。

这是一个旧的topi,但是,我现在处于确切的情况,我在网上找到的所有解决方案都复杂或过时。

最近,我遇到了一个支持 V8 引擎的库(包括新的隔离 API,它使我发现的 90% 的库已经过时),并提供了很好的公开和交互 API。

https://github.com/QuartzTechnologies/v8bridge

我希望我的解决方案能帮助任何人。

有一个

相对较新的库来做到这一点,称为 nbind。也许这适合你?它对我来说看起来非常好,我正要开始使用它。

我认为你想要一个C++的JSON解析器。http://www.json.org/,您应该能够在这里找到一个。它可能不会做你想要的一切,因为它只是序列化和反序列化C++对象而没有任何行为,但它应该足够好。有关一些讨论,请参阅 https://stackoverflow.com/questions/245973/whats-the-best-c-json-parser。

如果C++代码必须位于客户端上,则没有简单的方法可以为 Web 应用程序执行此操作。解决方案可能涉及为您想要支持的浏览器编写插件,然后可以从 javascript 代码访问这些插件。

例如,如果客户端应用程序需要此功能,那就是另一种情况。这样的事情已经完成,并且涉及将您的应用程序链接到(或从外部运行)例如 chromium 库或任何其他 JavaScript 执行引擎。这样,您就可以创建绑定到C++类,并从javascript使用此类对象,反之亦然。请注意,这也不是一个微不足道的解决方案,并且可能需要很大的努力来实现(还需要额外的资源)。

例如,

您可以将C++类包装在PHP或Python中,然后通过HTTP实现API以访问所需的函数。

或者,如果您坚持将函数公开为 JavaScript,您可以尝试使用 Node.js,并创建一个 C++ 插件来包装您的类。请参阅此处的节点.js文档:http://nodejs.org/api/addons.html#addons_wrapping_c_objects

但无论哪种方式,我都不认为避免创建某种API(HTTP SOAP,XML RPC)来访问服务器上的功能。

虽然QML不完全是Javascript,但Qt并不是普通的C++,但它们一起做的事情似乎就像你需要的一样。