【问题标题】:Can't use webkit2gtk-4.0 and webkit2gtk-web-extension-4.0 in my program at the same time不能在我的程序中同时使用 webkit2gtk-4.0 和 webkit2gtk-web-extension-4.0
【发布时间】:2014-12-23 21:59:06
【问题描述】:

我在我的 Vala 程序中使用webkit2gtk 向用户显示一些页面,并使用webkit2gtk-web-extension 来管理 DOM。但是由于构建错误,我不能同时使用这两个包。当我将这两个包添加到cmake 系统时,它显示此错误:

webkit2gtk-web-extension-4.0.vapi:2619.2-2619.38: error: `WebKit' already contains a definition for `URIRequest'
    public class URIRequest : GLib.Object {
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
webkit2gtk-4.0.vapi:488.2-488.38: note: previous definition of `URIRequest' was here
    public class URIRequest : GLib.Object {
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
webkit2gtk-web-extension-4.0.vapi:2628.2-2628.39: error: `WebKit' already contains a definition for `URIResponse'
    public class URIResponse : GLib.Object {
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
webkit2gtk-4.0.vapi:497.2-497.39: note: previous definition of `URIResponse' was here
    public class URIResponse : GLib.Object {
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

如果我从 CMakeLists.txt 中删除其中一个包,则找不到 WebKit.WebView 或 WebKit.Webpage。

可能这是因为我自己构建了webkit2gtk-4.0 包并且没有使用存储库版本,我不知道。

那么,问题来了:如何管理它?

【问题讨论】:

    标签: build webkit cmake vala webkitgtk


    【解决方案1】:

    基于 nemequ 的回答。这两个库不能同时使用,等等。Webkit2GTK-4.0 绑定需要工作以支持 DOM 操作。具体来说,WebKit2GTK 绑定需要 JSCore 支持。如果没有 JSCore,即使不可能在 WebKit2GTK 中修改 JS 上下文也很困难。至少这是它在 WebKitGtk-3 中的设置方式。

    与此同时,您实际上可以使用 WebKitGtk-3.0 DaveDoesDev 有一个完美的教程,这里列出:http://www.davedoesdev.com/wrapping-webkit-part-1-gtk+-vala/

    您可以在此处查看工作实施:https://github.com/CT-Architecture/AbstractStudio-Baseline/blob/master/src/widgets/webkitView.vala

    这是 JSCore Vapi:https://github.com/CT-Architecture/AbstractStudio-Baseline/blob/master/vapi/javascriptcore.vapi

    【讨论】:

    • 如果你能提交一个关于 Webkit2-4.0 中究竟需要什么工作的错误,那就太好了。除非有人让我们知道,否则错误不太可能得到修复,特别是因为 (AFAIK) Vala 开发人员在他们的其他项目中都没有使用 WebKit。
    • JSCore 需要移植到 Webkit2GTK。我不完全确定的确切细节。因此尚未提交错误报告。
    • 您说“Webkit2GTK-4.0 绑定需要工作以支持 DOM 操作”,这就是我要问的问题。应该与 JSCore 无关的 AFAIK,我目前不知道 Webkit2-4.0 绑定中的任何错误。
    • 我认为 JSCore 是 WebKit2 绑定不可或缺的一部分,因为没有它你真的无法通过 Javascript 修改 DOM。不过,我已经修改了我的答案,使其更加清晰。
    【解决方案2】:

    这两个包不能同时使用。这不是 Vala 绑定的问题——在 C 级别也是如此,这是设计使然。

    【讨论】:

    • 具体来说webkit2gtk-4.0是你的主程序,webkit2gtk-web-extension是你的web扩展,应该是WebKit的web进程加载的插件。
    • 哦,我现在明白了。那么有没有办法在 WebVIew 中管理 DOM 呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多