- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在评估从 HTML 页面中嵌入的 JavaScript 代码调用 C++ 函数的不同方法/解决方案。该应用程序必须在 Ubuntu Server 12.04 LTS 上运行。
我不是基于 Linux 的开发专家。这是我第一次尝试在 JavaScript 和 C++ 代码之间进行交互。
C++ 代码基本上驻留在 .so 文件(动态库)中,这些文件将提供访问特定硬件和文件系统的接口(interface)方法。 GUI 需要在 HTML 中,我正在寻找可以从 HTML 调用 C++ 的不同解决方案。我搜索并最终决定尝试两种方法,都使用 WebKit 引擎。
方法一:使用Qt 5.0.2 Webkit Bridge——WebView控件
GUI 框架将基于 Qt 框架,主应用程序窗口将包含一个 webview 控件,该控件将运行 HTML 代码,而 HTML 代码又包含 JavaScript 代码。
网页和 C++ 之间的接口(interface)是使用 addToJavaScriptWindowObject() 函数完成的。
我创建了一个示例应用程序并测试了这个解决方案,它似乎工作正常。
方法二:使用 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 文件中)的接口(interface)部分。我应该寻找什么样的信号。如果我使用的是 WebkitWebview 控件,如何将按钮点击映射到 C++ 函数?
有人能指出我正确的方向吗?
非常感谢您的时间和知识。
问候。
最佳答案
Webkit GTK 2 在 API 方面发生了重大变化。所以我不确定这是否适用于 Webkit GTK 2。但是这肯定适用于 Webkit GTK 1.* 版本。对 QT 一无所知。
为了将 html View 与世界的 C/C++ 端连接起来,您可以使用两种方法。请查看函数 webkit_dom_event_target_add_event_listener。在 https://live.gnome.org/WebKitGtk/ProgrammingGuide/Cookbook 有例子
您可以采用的另一种方法是在单击按钮时使用警报并发送一个字符串作为信息。在 C 端,您可以连接警报监听器并解析消息并决定需要做什么。我已经在 python 中编写了很多代码,这些代码采用了这种方法,因为上面提到的调用没有暴露给 python。
我同意 webkit gtk 的文档有点稀疏。然而,如果你知道如何用 javascript 完成一些事情,通常你可以将 javascript DOM 管理和事件调用映射到 C 端。这包括动态生成元素、管理 onclick 等事件。您只需挖掘头文件并找到匹配的调用。
关于javascript - 使用 GTK+ Webkit Webview(和 Qt WebKit 桥)从 JavaScript/HTML 调用 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16537318/
我正在阅读命令模式,并且看到来自不同站点的示例,这些示例似乎使用桥+命令模式来展示命令模式。 首先,来自维基百科:https://en.wikipedia.org/wiki/Command_patte
我有一个超低延迟程序,需要与 Windows COM 组件交互。最快的方法是什么?使用像 JACOB 这样的 COM 桥,或者编写 native COM 库并使用像 ZeroMQ 这样的消息传递总线发
我正在开发一个应用程序,该应用程序具有托管在 Glassfish 服务器上的 Java Web 界面和作为 Linux 守护进程实现的 C 内核。 我现在最大的问题是如何进行远程过程调用。我需要双向调
我已经在带有KVM的Fedora 17上设置了VM,并为KVM配置了桥接网络。主机和VM均使用手动IP配置,主机的IP为192.168.0.2,VM的为192.168.0.10。 从VM可以毫无问题地
主 GUI 基于 SWT。我正在通过单击按钮从 printPDF 类运行打印操作。 public void startPDFPrint() throws Exception { Display
我开始尝试使用 SWT-AWT 桥,但我无法为位于 Composite 内的 JPanel 找到合适的尺寸。谁能告诉我代码有什么问题吗? import java.awt.BorderLayout; i
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Troubleshooting ClassNotFoundException when using PHP/
我对 Linux 很陌生,但我正在尽力学习。我们有CentOS 6的专用托管服务器。它配置了Apache服务器作为我们的公共(public)网站。现在我们需要在上面安装 PHP JAVA Bridge
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 2 年前。 Improve this qu
有没有类似铁轨搭桥 Pylons 的脚手架?我一直在搜索谷歌,但只发现了这个叫做 dbsprockets 的东西,这很好,虽然可能对我的需要来说太多了。我真正需要的是基于 SQLAlchemy 模型的
我正在寻找可用于集成任何源代码控制管理系统的通用 git 桥(如 git-svn、git-p4、git-tfs)模板。 如果没有这样的模板,至少有一些关于如何在 git 端集成基本操作的说明(对于其他
我正在开发一个应用程序,我将在 UIWebView 中同时使用 HTML5 和 native iOS 框架。我知道我可以实现 JavaScript 和 Objective-C 之间的通信。是否有任何库
我目前观察到第 3 方库(即 restfb)正在使用 java.util.logging,我看到这些日志最终出现在 STDOUT 中,即使我没有在我的 logback 中配置 SLF4J 控制台附加程
我正在尝试让 aurelia-materialize 桥接插件工作,但到目前为止无法使用 jspm 完成,所以我尝试使用 webpack。我将 typescript-webpack 框架提取到一个文件
我想使用 java 将 SFTP 客户端连接到 FTP 服务器。我知道这两种技术彼此无关。我想要完成的是通过互联网连接到 FTP 服务器,而不使用两个端口或更改服务器配置。 Java 中有 SFTP-
我有 MS Access 数据库文件,文本字段中带有德语变音符号。当我尝试阅读它们时,我有字符串?字符而不是带有变音符号的字符。我尝试为数据库连接设置不同的字符集,例如 properties.setP
我感觉这是 wpf 中的一个错误。让我知道你们对此有何看法。 为了简单起见,我在 .net 4.0 中制作了演示示例 我有一个 ContentControl,其中 Content 绑定(bind)到
我正在尝试让 PHPJAVA 桥在我目前的 Apache2 设置上工作。 虽然,坦率地说,我不知道从哪里开始。 我已经下载了 JavaBridgeTemplate621.war,但不知道放在哪里。 感
我需要在 php 上运行一些 java 代码所以我找到了这个 http://php-java-bridge.sourceforge.net/pjb/index.php 所以我下载了tomcat,把Ja
我正在使用 OrientDb 并希望通过 PHP 运行 Gremlin 命令。有谁知道是否有任何桥梁或产品可以连接这两种语言? 虽然我知道 OrientDB-PHP 和 OrientDB-REST 包
我是一名优秀的程序员,十分优秀!