2017-02-10 8 views
0

私はValaのとGTKを使用して私の最初のWebKitベースのアプリケーションを構築しようとしています。私はこれらの言語やそれらをコンパイルするプロセスに非常に新しいので、どんな助けも素晴らしいでしょう。は、WebKitの/のWebViewアプリのコンパイルエラーを取得する - ヴァラ/ GTK

これは私が受け取るエラーです:

/home/elementary/GTKProjects/Fookbase/src/fookbase_main.vala:2.7-2.12:エラー:名前空間名 `WebKitが」WebKitのを使用して見つけることができませんでした。

/home/elementary/GTKProjects/Fookbase/src/fookbase_main.vala:13.13-13.19:エラー:タイプ名 'WebView'が見つかりませんでしたprivate WebView web_view;

これは私のコードです:

using Gtk; 
using WebKit; 

public class Fookbase : Window { 

private const string TITLE = "Fookbase"; 
private const string HOME_URL = "http://fookbase.com"; 
private const string DEFAULT_PROTOCOL = "http"; 

private Regex protocol_regex; 

private Entry url_bar; 
private WebView web_view; 
private Label status_bar; 
private ToolButton back_button; 
private ToolButton forward_button; 
private ToolButton reload_button; 

public Fookbase() { 
    this.title = Fookbase.TITLE; 
    set_default_size (500, 800); 

    try { 
     this.protocol_regex = new Regex (".*://.*"); 
    } catch (RegexError e) { 
     critical ("%s", e.message); 
    } 

    create_widgets(); 
    connect_signals(); 
    this.url_bar.grab_focus(); 
} 

private void create_widgets() { 
    var toolbar = new Toolbar(); 
    this.back_button = new ToolButton.from_stock (Stock.GO_BACK); 
    this.forward_button = new ToolButton.from_stock (Stock.GO_FORWARD); 
    this.reload_button = new ToolButton.from_stock (Stock.REFRESH); 
    toolbar.add (this.back_button); 
    toolbar.add (this.forward_button); 
    toolbar.add (this.reload_button); 
    this.web_view = new WebView(); 
    var scrolled_window = new ScrolledWindow (null, null); 
    scrolled_window.set_policy (PolicyType.AUTOMATIC, PolicyType.AUTOMATIC); 
    scrolled_window.add (this.web_view); 
    this.status_bar.xalign = 0; 
    var vbox = new VBox (false, 0); 
    vbox.pack_start (toolbar, false, true, 0); 
    vbox.pack_start (this.url_bar, false, true, 0); 
    vbox.add (scrolled_window); 
    vbox.pack_start (this.status_bar, false, true, 0); 
    add (vbox); 
} 

private void connect_signals() { 
    this.destroy.connect (Gtk.main_quit); 
    this.url_bar.activate.connect (on_activate); 
    this.web_view.title_changed.connect ((source, frame, title) => { 
     this.title = "%s - %s".printf (title, Fookbase.TITLE); 
    }); 
    this.web_view.load_committed.connect ((source, frame) => { 
     this.url_bar.text = frame.get_uri(); 
     update_buttons(); 
    }); 
    this.back_button.clicked.connect (this.web_view.go_back); 
    this.forward_button.clicked.connect (this.web_view.go_forward); 
    this.reload_button.clicked.connect (this.web_view.reload); 
} 

private void update_buttons() { 
    this.back_button.sensitive = this.web_view.can_go_back(); 
    this.forward_button.sensitive = this.web_view.can_go_forward(); 
} 

private void on_activate() { 
    var url = this.url_bar.text; 
    if (!this.protocol_regex.match (url)) { 
     url = "%s://%s".printf (Fookbase.DEFAULT_PROTOCOL, url); 
    } 
    this.web_view.open (url); 
} 

public void start() { 
    show_all(); 
    this.web_view.open (Fookbase.HOME_URL); 
} 

public static int main (string[] args) { 
    Gtk.init (ref args); 

    var browser = new Fookbase(); 
    browser.start(); 

    Gtk.main(); 

    return 0; 
    } 
} 
+0

可能な重複[WebKitの/ webkit.h:そのようなファイルまたはディレクトリ](http://stackoverflow.com/questions/26400755/webkit-webkit-h-no -such-file-or-directory) –

+0

それは実際には重複していませんが、かなり近いです。彼の質問に使用された 'valac'コマンドライン@ serge1peshcoffをチェックしてください。 –

+0

私はバラクラインにwebkitgtk-1.0を持っていました。エラー:指定されたVala APIディレクトリまたはGObject-Introspection GIRディレクトリにパッケージ 'webkitgtk-3.0'が見つかりません コンパイルに失敗しました:1エラーが発生しました。 0警告 –

答えて

4

Valaの中でライブラリを使用するためには、あなたはそれについて、コンパイラに指示する必要があります。コード内で「WebKitを使う」と言っているだけでは不十分です。これを行うには、に--pkgフラグ(目的の値)を渡します。

ほとんどすべてのバインディングのパッケージ名はpkg-configと一致しているため、ValaコンパイラはCコンパイラとリンカに渡す正しいフラグを自動的に判断できます。ヴァラから利用されているパッケージを表示するには、/usr/share/vala/vapi/usr/share/vala-x.yz/vapiディレクトリ(後者は、使用しているvalacのバージョンに固有である)で見ることができます。 Valadoc.orgにはたくさんのパッケージの名前もあります。私はあなたのコードを書いたときのあなたの参照が何だったのか分からないが、一般的に彼らはあなたが見ているパッケージを教えてくれるだろう。

WebKitの場合、新しいソフトウェアを作成する場合は、おそらくgtk + -3.0とリンクするパッケージであるwebkit2gtk-4.0またはwebkit2gtk-web-extension-4.0のいずれかを使用します。

だから、何か

valac --pkg webkit2gtk-4.0 ... your-file.vala 
関連する問題