Javascript C++ binding?
Javascript C++ binding?
我有一些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++,但它们一起做的事情似乎就像你需要的一样。
- 使用 [] 运算符时"binding reference of type discards qualifiers"
- 在node-gip binding.gyp文件中,如何根据系统结构(32位、64位)包含不同的库文件
- protobuf in C++ with dynamic binding for google::protobuf::M
- binding.gyp:如何使用"copies"部分在多个位置复制文件
- Binding C++ and Fortran
- SQLite Binding Numaric 数据类型
- Javascript C++ binding?
- Binding to a weak_ptr
- Reg Sqlite binding
- C++错误:"Using obsolete binding"
- c++/MATLAB Mex binding
- CMFCPropertyGridProperty and CCombobox binding
- 在构建Node.js/Node-webkit插件时,通过binding.gyp将.cpp文件编译为Objective-C
- 关于"structural binding"的提案在哪里?
- “VkVertexInputBindingDescription”中的“binding”的目的是什么
- Cocos2d-x lua binding
- Binding to OpenGL 3.x VBO
- constexpr 是编译器的"hint"(如内联)还是"a binding request"?
- C++11 模板参数"late binding"
- 在 Lua/Binding 中使用C++函数