我有一个具有 C++ 后端和 HTML5/JS 前端的桌面应用程序。我们目前不得不使用 Google V8 或 Mac Webview 和 Objective-C 来允许 Javascript 和 C++ 进行通信。有没有办法让他们在没有中间件的情况下直接相互交谈?
试图完成:
- 共享变量。
- 从 C++ 调用函数到 JS。
- 从 JS 调用函数到 C++。
我试过用谷歌搜索,一切都指向上述解决方案。
我有一个具有 C++ 后端和 HTML5/JS 前端的桌面应用程序。我们目前不得不使用 Google V8 或 Mac Webview 和 Objective-C 来允许 Javascript 和 C++ 进行通信。有没有办法让他们在没有中间件的情况下直接相互交谈?
试图完成:
我试过用谷歌搜索,一切都指向上述解决方案。
你的软件听起来很像一个网络应用程序,中间没有互联网。在这种情况下, NodeJS可能会成为很好的中间件,您可以用 C++ 为它编写模块,并在 javascript 中使用它们。我自己还没有这样做。一个简短的例子:)
现在几年后我们有了Electron 项目,它基本上是上面的,但有一个基于 Chrome 的 web 视图。
你现在可以使用Electron来获得一个可以直接访问 Node.js API 的 Chrome 网络浏览器。然后您可以使用nbind轻松地从 JavaScript 调用 C++ 代码。这样,两者共享相同的线程和堆。
您可以通过在 C++11 源文件中添加类似这样的内容来声明 C++ 类:
NBIND_CLASS(X) {
construct<int, int>();
method(Y);
method(Z);
}
这为类 X 创建了绑定,构造函数采用 2 个整数和方法 Y 和 Z,具有几乎任何类型的参数和可选的返回值。
nbind
附带一个示例,说明如何将 C++ 代码打包到 Node.js 插件中,以便在 Electron 中使用。
请看这个,我是楼主
http://code.google.com/p/libjspp/
libjspp 允许 C++ 与 javascript spidermonkey 1.8.5 轻松连接和交互?同时不干扰 C++ 和 javascript 世界。对于希望以面向对象的方式嵌入和扩展 Javascript 的应用程序很有用。通过使用 C++ 模板,非常薄的界面几乎没有开销。
我是