11

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

这是以前做过的吗?有没有人有一个链接来展示如何实现这一点?

4

9 回答 9

5

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

于 2012-08-18T03:05:38.780 回答
2

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

蜘蛛猴?是 Mozilla Project 的 Javascript/ECMAScript 引擎。

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

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

于 2013-03-08T04:28:16.810 回答
1

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

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

于 2012-08-17T13:01:56.373 回答
1

这是一个古老的话题,但是,我现在处于确切的情况,并且我在网上找到的所有解决方案都很复杂或过时。

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

https://github.com/QuartzTechnologies/v8bridge

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

于 2014-10-22T16:45:56.700 回答
1

有一个相对较新的库用于执行此操作,称为nbind。也许那会适合你?它对我来说看起来非常好,我正要开始使用它。

于 2017-07-17T21:06:50.890 回答
0

如果 C++ 代码必须在客户端上,那么对于 Web 应用程序来说没有简单的方法可以做到这一点。解决方案可能涉及为您想要支持的浏览器编写插件,然后可以从 javascript 代码访问这些插件。

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

于 2012-08-17T12:26:59.647 回答
0

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

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

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

于 2012-08-17T12:30:18.613 回答
0

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

于 2012-08-17T12:23:13.353 回答
-1

虽然QML不完全是 Javascript,但Qt也不是纯 C++,但它们一起做的看起来就像你需要的一样

于 2015-02-18T11:14:43.363 回答