適当に翻訳する。
gtk によるプログラミングを勉強している。Ubuntu 10.10を使っていて、次の文をコンパイルしたい。(gtk の最初の教本)
#include <gtk/gtk.h>
int main(int argc, char *argc[])
{
GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_show (window);
gtk_main ();
return 0;
}
g++ と gcc が"gtk/gtk.h"を見つけられない、という問題が発生。
"gtk.cpp:1: fatal error: gtk/gtk.h: No such file or directory compilation terminated."
既に libgtk2.0-dev をインストールしているが上手くいかない。
どうすればいいのか。お願いします。
外部ファイルまでの道筋(include path)を設定していない。
翻訳器(コンパイラ)への指示に加える文:`pkg-config gtk+-2.0 --cflags`
連結器(リンカ)への指示に加える文 :`pkg-config gtk+-2.0 --libs`
gtkmm というものもある。C++ を使うのならそちらの方がいいかもしれない。
命令を正しい構文で書くと、どういう文になるのか?
Windowsを使っていたので、そういった翻訳器にはまだ慣れていない。
例:
g++ main.cpp -Os -s `pkg-config gtk+-2.0 --cflags` `pkg-config gtk+-2.0 --libs`
main関数の二番目の引数が最初のものと同じ名前になっている。
二番目は普通 argv を使う。
命令の構文を直し、翻訳してみた:
g++ gtk.cpp -Os -s `pkg-config gtk+-2.0 --cflags` `pkg-config gtk+-2.0 --libs`
こんな結果が出た:
gtk.cpp: In function ‘int main(int, char**)’:
gtk.cpp:5: error: ‘GtkWidget’ was not declared in this scope
gtk.cpp:5: error: ‘window’ was not declared in this scope
gtk.cpp:7: error: ‘gtk_init’ was not declared in this scope
gtk.cpp:9: error: ‘GTK_WINDOW_TOPLEVEL’ was not declared in this scope
gtk.cpp:9: error: ‘gtk_window_new’ was not declared in this scope
gtk.cpp:10: error: ‘gtk_widget_show’ was not declared in this scope
gtk.cpp:12: error: ‘gtk_main’ was not declared in this scope
解決しました。ありがとう。
おかしい。私の場合、Ubuntu 10.10 で、このやり方で翻訳に成功したのだが。
多分、参照し忘れているファイル群(パッケージ)があるのだろう。
libgtkmm-2.4-dev をインストールしてみるといい。
欠落している依存ファイルがどんなものであろうとも、libgtkmm-2.4-devが全部インストールしてくれるだろう。
カレンダー
カテゴリー
最新コメント
最新記事
ブログ内検索
広告