1

ubuntuでgtkmozembed.hを含むプログラムを作成しました。プログラムのコンパイルで問題に直面しています。以下は、gtkmozembed を使用する最も単純な形式のプログラムです。

#include <gtk/gtk.h>
#include <stdio.h>
#include <gtkmozembed.h>

int main(){
        GtkWidget *mozEmbed;
        mozEmbed = gtk_moz_embed_new();
        return 0;
}

上記のプログラムは何もしていませんが、そのプログラムをコンパイルするのは私にとって大変です...私は上記のプログラムを以下のようにコンパイルしようとしています

gcc `pkg-config --libs --cflags gtk+-2.0` test.c -o test

次のエラーが発生しています...

error: gtkmozembed.h: No such file or directory

コンパイラが gtkmozembed.h を見つけることができるように、上記の gcc 行に何か他のものを追加する必要があることは理解できますが、「何か」が何であるかを取得できません...誰かの助けを探しています..ありがとう.. .

4

3 に答える 3

1

あなたの問題はgtkmozembed.h、標準のインクルード ファイル ルックアップ パスに見つからないことです (まあ、エラーはそれをかなり明確に示しています)。私のシステムでは、に住んでいる$(include)/gtkmozembed/ので、2つのオプションがあります

  1. ソースに含まれるファイルのパスを変更します

    #include <gtkmozembed/gtkmozembed.h>
    
  2. または手動でルックアップ パスにパスを追加します。

    gcc `pkg-config --libs --cflags gtk+-2.0` -I/usr/include/gtkmozembed test.c -o test
    

オプション 1) を使用する必要があります。

これによりgcc、インクルード ファイルの場所がわかりますが、マシューが指摘したように、これだけでは不十分です。ほとんどの場合、リンクと必要な追加のインクルードに関する情報を追加する必要があります。ありがたいことに、gtk-mozembed にはファイルが付属しているためpkg-config、必要な情報をすべて取得できます。gtk+-2.0

pkg-config --libs --cflags mozilla-gtkmozembed-embedding

または他の呼び出しと組み合わせて

gcc `pkg-config --libs --cflags gtk+-2.0 mozilla-gtkmozembed-embedding` test.c -o test

また、(キックのために)何が機能するかを確認する必要がありpkg-configます。「`」の部分は、そのコマンドを実行したときにシェルによって返されるものです。私のマシンで:

$ pkg-config --libs --cflags mozilla-gtkmozembed-embedding
-DXPCOM_GLUE -fshort-wchar \
-I/usr/include/xulrunner-1.9.2  -L/usr/lib/xulrunner-devel-1.9.2/lib -lxpcomglue 

(改行は私が追加しました)。-Iパーツは、必要なディレクトリをインクルード ファイルのルックアップ パスに追加するだけです--cflags。のエントリ-lxpcomglueは、 を呼び出して--libs、このライブラリに対するリンクを要求するためlibxpcomglue.soです。にあります/usr/lib/xulrunner-devel-1.9.2/lib。残りは、gtkmozembed に必要なフラグですdefinegcc

于 2010-04-16T14:46:03.443 に答える
1

libxul-dev ( sudo apt-get install libxul-dev) をインストールし、

#include <gtkmozembed.h>

メインファイル(test.c)でコンパイルします

gcc `pkg-config --cflags --libs gtk+-2.0 xulrunner-gtkmozembed`  test.c -o test
于 2010-04-22T04:21:09.047 に答える
0

これを試して:

gcc `pkg-config --libs --cflags gtk+-2.0 mozilla-gtkmozembed-embedding` test.c -o test
于 2010-04-17T20:44:27.217 に答える