我目前正在评估从嵌入在 HTML 页面中的 JavaScript 代码调用 C++ 函数的不同方法/解决方案。该应用程序必须在 Ubuntu Server 12.04 LTS 上运行。
我不是基于 Linux 的开发方面的专家。这是我第一次尝试在 JavaScript 和 C++ 代码之间进行接口。
C++ 代码基本上位于 .so 文件(动态库)中,这些文件将提供接口方法来访问某些硬件和文件系统。GUI 需要采用 HTML 格式,我正在寻找可以从 HTML 调用 C++ 的不同解决方案。我搜索并最终决定尝试两种方法,都使用 WebKit 引擎。
方法 1:使用 Qt 5.0.2 Webkit Bridge - WebView 控件
GUI 框架将位于 Qt 框架上,主应用程序窗口将包含一个 webview 控件,该控件将运行 HTML 代码,而 HTML 代码又包含 JavaScript 代码。
网页和 C++ 之间的接口是使用 addToJavaScriptWindowObject() 函数完成的。
我创建了一个示例应用程序并测试了这个解决方案,它似乎工作正常。
方法 2:使用 GTK+ WebKit WebView
我下载并安装了 GTK 3.0 库。
我得到了 webkitgtk 2.0.1 并安装了它。
我用 GTK 创建了一个没有 webkit 的测试应用程序,它运行良好。
我正在尝试使用 GTK 创建一个 webkit webview 控件。
在使用 Qt 尝试我的方法 1 时,有相当多的文档和示例可以做我想做的事情。但是在开始使用 GTK+ 的方法 2 之后,我觉得相对而言移动速度较慢。我个人觉得对于我正在尝试开发的那种应用程序来说,文档部分并不是那么直接。
其他方法:
我还想尝试检查使用 Applets(直接调用 .so 文件)或使用 V8 JavaScript 引擎在 JavaScript 和 C++ 之间进行接口是否可行(https://code.google.com/p /v8/ )
我尝试了以下资源:
http://webkitgtk.org/
http://www.webkit.org/
https://live.gnome.org/WebKitGtk/ProgrammingGuide/Tutorial
我想知道当在包含 JavaScript 的 HTML 网页中单击按钮时,如何准确地执行调用 C++ 函数(在 .so 文件中)的接口部分。我应该寻找什么样的信号。如果我使用的是 WebkitWebview 控件,如何将按钮单击映射到 c++ 函数?
有人可以指出我正确的方向吗?
我非常感谢您的时间和知识。
问候。