免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8317 | 回复: 7
打印 上一主题 下一主题

我在windows xp 下使用 Glade [复制链接]

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:03
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-21 18:07 |只看该作者 |倒序浏览
我在windows xp 下使用 Glade , 没有成功编译出东西
想请问一下是否有详细 的Glade 教学使用说明?

gtk-2.10.7-win32-1 + gtk-dev-2.10.7-win32-1 + MinGW-3.1.0-1
我是安装上面三个档案 , 是否我还需要在安装什么?


http://www.cqinc.com.tw/coopermaa/xwindow/2000010201.htm

我是看这篇不过它是在linux 下操作 , 而且有些地方好像也跟 新版的 Glade 不一样

下面是上面网址教学提到的内容

这个步骤最后就是按下 Project Window 的 Wirte Source 按钮,让 Glade 自动产生程式。
Wirte Source 我找不到他说的Wirte Source  @@

开个 Console Control Program (ex: Bash、Konsole、cxterm...),然后切换至 ~/Project/hello 专案目录,输入:

$ ./autogen.sh
$ make

(执行 autogen.sh 会产生出编译专案所需要的 Makefile 和 Configure files,只有在第一次储存你的 Project 时才需要跑 autogen.sh)

如果一切正常的话,可执行档 hello 便会被编译出,放在  src 目录中,所以只要输入下列指令即可启动 Hello World application:

$ src/hello

上面这些指令只能在linux 下使用那我是在windows xp 那我应该要如何去执行autogen.sh & make?
使用 msys吗? 不过我试过好像也不行我不知道是否我操作错误 @@

所以我想知道是否有比较新的Glade 操作教学 , 最好是有图档步骤说明

谢谢

论坛徽章:
0
2 [报告]
发表于 2007-03-22 22:42 |只看该作者
>> gtk-2.10.7-win32-1 + gtk-dev-2.10.7-win32-1 + MinGW-3.1.0-1
>> 我是安装上面三个档案 , 是否我还需要在安装什么?

还需要 MSYS。在这个帖子中已经说过了:http://bbs.chinaunix.net/viewthr ... &extra=page%3D1

>> 我是看这篇不过它是在linux 下操作 , 而且有些地方好像也跟 新版的 Glade 不一样

你看到的那篇文章是对 glade-2 介绍的,而你使用的可能是 glade-3。glade-2 有代码生成功能,而 glade-3 去掉了此功能,成为一个纯粹的界面制作工具。

对于初学者来说,或者想快速建立一个 GTK+ 的应用程序来体验的话,glade-2 的代码生成功能还是很有用处的。

>> Wirte Source 我找不到他说的Wirte Source  @@

在 glade-2 中才有此按钮,它的名字叫“Build”。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:03
3 [报告]
发表于 2007-03-23 11:59 |只看该作者
  1. #include <gtk/gtk.h>

  2. int main( int   argc,
  3.           char *argv[] )
  4. {
  5.     GtkWidget *window;
  6.    
  7.     gtk_init (&argc, &argv);
  8.    
  9.     window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  10.     gtk_widget_show  (window);
  11.    
  12.     gtk_main ();
  13.    
  14.     return 0;
  15. }
复制代码


目前安裝gtk-2.10.7-win32-1 + gtk-dev-2.10.7-win32-1 + MinGW-3.1.0-1 + Msys1.0 四個

我在msys 下gcc base.c -o base `pkg-config --cflags --libs gtk+-2.0`



出現下面錯誤訊息請問是哪邊有問題?


$ gcc base.c -o base `pkg-config --cflags --libs gtk+-2.0`
Package gtk+-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-2.0' found
base.c:1:21: gtk/gtk.h: No such file or directory
base.c: In function `main':
base.c:6: `GtkWidget' undeclared (first use in this function)
base.c:6: (Each undeclared identifier is reported only once
base.c:6: for each function it appears in.)
base.c:6: `window' undeclared (first use in this function)
base.c:10: `GTK_WINDOW_TOPLEVEL' undeclared (first use in this function)

论坛徽章:
0
4 [报告]
发表于 2007-03-23 19:59 |只看该作者
重新启动一下计算机后再编译试试看。

如果还出现上面的错误信息,需要将 gtk+-2.0.pc 文件所在的目录设置到 PKG_CONFIG_PATH 环境变量中。gtk+-2.0.pc 一般位于 GTK 目录下的 lib/pkgconfig 中。在 MSYS 下可使用 export 命令设置环境变量。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:03
5 [报告]
发表于 2007-03-26 14:55 |只看该作者
还是搞不定 @@

下面四种我都试过

export PKG_CONFIG_PATH=C:\GTK\lib\pkgconfig\gtk+-2.0.pc
export PKG_CONFIG_PATH=C:\GTK\lib\pkgconfig

export PKG_CONFIG_PATH=C:/GTK/lib/pkgconfig
export PKG_CONFIG_PATH=C:/GTK/lib/pkgconfig/gtk+-2.0.pc

msys 下gcc base.c -o base `pkg-config --cflags --libs gtk+-2.0`还是出现一样错误讯息

谢谢

论坛徽章:
0
6 [报告]
发表于 2007-03-26 23:17 |只看该作者
GLADE for Windows在安装的时候会自动检测下列编译环境并设置相应的环境变量:
  • Cygwin
  • MSYS
  • Dev-Cpp
  • MSVC

你的问题可能在于 GTK+ 的安装顺序不对。应该在 MinGW + MSYS 安装好之后再安装 GTK+,这样才能检测到如上所述的 MSYS 并为你进行环境设置。因此,你应该重新安装一遍 GLADE for Windows,这样就可以正常进行编译 GTK+ 的程序了,无需再进行任何环境设置。

安装的时候只要安装 gtk-dev-2.10.7-win32-1 这一个开发软件包就可以了。开发用软件包中已经包含了运行环境软件包 gtk-2.10.7-win32-1 的内容。

另外,在 MSYS 中设置 PKG_CONFIG_PATH 的时候要注意:
  • 只能设置为目录,不能是文件。因此,你上面的 1 和 4 是错误的。
  • 注意目录分割符。/ 是合法的,所以 3 是正确的。单独用 \ 是不合法的,应该用 \\ 表示一个分割符,所以 2 改为 C:\\GTK\\lib\\pkgconfig 就对了。
  • 还可以用这种形式:/C/GTK/lib/pkgconfig

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:03
7 [报告]
发表于 2007-03-27 12:01 |只看该作者
whyglinux  可以使用了 ^^ 原来是安装顺便问题

下面网址中图中黑黑DOS 画面我想要把他关掉要加什么参数编译?
gcc base.c -o base `pkg-config --cflags --libs gtk+-2.0` // 这是我目前用的还要再加上什么才可以关掉黑黑的DOS 画面?













  1. /*
  2. * button.c:
  3. * Simple toggle button example.
  4. *
  5. * written by Naofumi Yasufuku  <naofumi@users.sourceforge.net>
  6. */

  7. #include <stdlib.h>
  8. #include <math.h>

  9. #include <gtk/gtk.h>

  10. #include <gtk/gtkgl.h>

  11. #ifdef G_OS_WIN32
  12. #define WIN32_LEAN_AND_MEAN 1
  13. #include <windows.h>
  14. #endif

  15. #include <GL/gl.h>
  16. #include <GL/glu.h>

  17. #define TIMEOUT_INTERVAL 10

  18. static gboolean animate = TRUE;

  19. static GLfloat angle = 0.0;
  20. static GLfloat pos_y = 0.0;

  21. static void
  22. realize (GtkWidget *widget,
  23.          gpointer   data)
  24. {
  25.   GdkGLContext *glcontext = gtk_widget_get_gl_context (widget);
  26.   GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (widget);

  27.   static GLfloat ambient[]  = { 0.0, 0.0, 0.0, 1.0 };
  28.   static GLfloat diffuse[]  = { 1.0, 1.0, 1.0, 1.0 };
  29.   static GLfloat position[] = { 1.0, 1.0, 1.0, 0.0 };
  30.   static GLfloat lmodel_ambient[] = {0.2, 0.2, 0.2, 1.0};
  31.   static GLfloat local_view[] = {0.0};

  32.   /*** OpenGL BEGIN ***/
  33.   if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext))
  34.     return;

  35.   glLightfv (GL_LIGHT0, GL_AMBIENT, ambient);
  36.   glLightfv (GL_LIGHT0, GL_DIFFUSE, diffuse);
  37.   glLightfv (GL_LIGHT0, GL_POSITION, position);
  38.   glLightModelfv (GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
  39.   glLightModelfv (GL_LIGHT_MODEL_LOCAL_VIEWER, local_view);
  40.   glEnable (GL_LIGHTING);
  41.   glEnable (GL_LIGHT0);
  42.   glEnable (GL_DEPTH_TEST);

  43.   glClearColor (1.0, 1.0, 1.0, 1.0);
  44.   glClearDepth (1.0);

  45.   gdk_gl_drawable_gl_end (gldrawable);
  46.   /*** OpenGL END ***/
  47. }

  48. static gboolean
  49. configure_event (GtkWidget         *widget,
  50.                  GdkEventConfigure *event,
  51.                  gpointer           data)
  52. {
  53.   GdkGLContext *glcontext = gtk_widget_get_gl_context (widget);
  54.   GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (widget);

  55.   GLfloat w = widget->allocation.width;
  56.   GLfloat h = widget->allocation.height;
  57.   GLfloat aspect;

  58.   /*** OpenGL BEGIN ***/
  59.   if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext))
  60.     return FALSE;

  61.   glViewport (0, 0, w, h);

  62.   glMatrixMode (GL_PROJECTION);
  63.   glLoadIdentity ();
  64.   if (w > h)
  65.     {
  66.       aspect = w / h;
  67.       glFrustum (-aspect, aspect, -1.0, 1.0, 5.0, 60.0);
  68.     }
  69.   else
  70.     {
  71.       aspect = h / w;
  72.       glFrustum (-1.0, 1.0, -aspect, aspect, 5.0, 60.0);
  73.     }

  74.   glMatrixMode (GL_MODELVIEW);

  75.   gdk_gl_drawable_gl_end (gldrawable);
  76.   /*** OpenGL END ***/

  77.   return TRUE;
  78. }

  79. static gboolean
  80. expose_event (GtkWidget      *widget,
  81.               GdkEventExpose *event,
  82.               gpointer        data)
  83. {
  84.   GdkGLContext *glcontext = gtk_widget_get_gl_context (widget);
  85.   GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (widget);

  86.   /* brass */
  87.   static GLfloat ambient[4]  = { 0.329412, 0.223529, 0.027451, 1.0 };
  88.   static GLfloat diffuse[4]  = { 0.780392, 0.568627, 0.113725, 1.0 };
  89.   static GLfloat specular[4] = { 0.992157, 0.941176, 0.807843, 1.0 };
  90.   static GLfloat shininess   = 0.21794872 * 128.0;

  91.   /*** OpenGL BEGIN ***/
  92.   if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext))
  93.     return FALSE;

  94.   glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  95.   glLoadIdentity ();
  96.   glTranslatef (0.0, 0.0, -10.0);

  97.   glPushMatrix ();
  98.     glTranslatef (0.0, pos_y, 0.0);
  99.     glRotatef (angle, 0.0, 1.0, 0.0);
  100.     glMaterialfv (GL_FRONT, GL_AMBIENT, ambient);
  101.     glMaterialfv (GL_FRONT, GL_DIFFUSE, diffuse);
  102.     glMaterialfv (GL_FRONT, GL_SPECULAR, specular);
  103.     glMaterialf (GL_FRONT, GL_SHININESS, shininess);
  104.     gdk_gl_draw_torus (TRUE, 0.3, 0.6, 30, 30);
  105.   glPopMatrix ();

  106.   if (gdk_gl_drawable_is_double_buffered (gldrawable))
  107.     gdk_gl_drawable_swap_buffers (gldrawable);
  108.   else
  109.     glFlush ();

  110.   gdk_gl_drawable_gl_end (gldrawable);
  111.   /*** OpenGL END ***/

  112.   return TRUE;
  113. }

  114. static gboolean
  115. timeout (GtkWidget *widget)
  116. {
  117.   GLfloat t;

  118.   angle += 3.0;
  119.   if (angle >= 360.0)
  120.     angle -= 360.0;

  121.   t = angle * G_PI / 180.0;
  122.   if (t > G_PI)
  123.     t = 2.0 * G_PI - t;

  124.   pos_y = 2.0 * (sin (t) + 0.4 * sin (3.0*t)) - 1.0;

  125.   /* Invalidate the whole window. */
  126.   gdk_window_invalidate_rect (widget->window, &widget->allocation, FALSE);

  127.   /* Update synchronously (fast). */
  128.   gdk_window_process_updates (widget->window, FALSE);

  129.   return TRUE;
  130. }

  131. static guint timeout_id = 0;

  132. static void
  133. timeout_add (GtkWidget *widget)
  134. {
  135.   if (timeout_id == 0)
  136.     {
  137.       timeout_id = gtk_timeout_add (TIMEOUT_INTERVAL,
  138.                                     (GtkFunction) timeout,
  139.                                     widget);
  140.     }
  141. }

  142. static void
  143. timeout_remove (GtkWidget *widget)
  144. {
  145.   if (timeout_id != 0)
  146.     {
  147.       gtk_timeout_remove (timeout_id);
  148.       timeout_id = 0;
  149.     }
  150. }

  151. static void
  152. unrealize (GtkWidget *widget,
  153.            gpointer   data)
  154. {
  155.   timeout_remove (widget);
  156. }

  157. static gboolean
  158. map_event (GtkWidget *widget,
  159.            GdkEvent  *event,
  160.            gpointer   data)
  161. {
  162.   if (animate)
  163.     timeout_add (widget);

  164.   return TRUE;
  165. }

  166. static gboolean
  167. unmap_event (GtkWidget *widget,
  168.              GdkEvent  *event,
  169.              gpointer   data)
  170. {
  171.   timeout_remove (widget);

  172.   return TRUE;
  173. }

  174. static gboolean
  175. visibility_notify_event (GtkWidget          *widget,
  176.                          GdkEventVisibility *event,
  177.                          gpointer            data)
  178. {
  179.   if (animate)
  180.     {
  181.       if (event->state == GDK_VISIBILITY_FULLY_OBSCURED)
  182.         timeout_remove (widget);
  183.       else
  184.         timeout_add (widget);
  185.     }

  186.   return TRUE;
  187. }

  188. static void
  189. toggle_animation (GtkWidget *widget)
  190. {
  191.   animate = !animate;

  192.   if (animate)
  193.     {
  194.       timeout_add (widget);
  195.     }
  196.   else
  197.     {
  198.       timeout_remove (widget);
  199.       gdk_window_invalidate_rect (widget->window, &widget->allocation, FALSE);
  200.     }
  201. }

  202. static GtkWidget *
  203. create_gl_toggle_button (GdkGLConfig *glconfig)
  204. {
  205.   GtkWidget *vbox;
  206.   GtkWidget *drawing_area;
  207.   GtkWidget *label;
  208.   GtkWidget *button;

  209.   /*
  210.    * VBox.
  211.    */

  212.   vbox = gtk_vbox_new (FALSE, 0);
  213.   gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);

  214.   /*
  215.    * Drawing area for drawing OpenGL scene.
  216.    */

  217.   drawing_area = gtk_drawing_area_new ();
  218.   gtk_widget_set_size_request (drawing_area, 200, 200);

  219.   /* Set OpenGL-capability to the widget. */
  220.   gtk_widget_set_gl_capability (drawing_area,
  221.                                 glconfig,
  222.                                 NULL,
  223.                                 TRUE,
  224.                                 GDK_GL_RGBA_TYPE);

  225.   g_signal_connect_after (G_OBJECT (drawing_area), "realize",
  226.                           G_CALLBACK (realize), NULL);
  227.   g_signal_connect (G_OBJECT (drawing_area), "configure_event",
  228.                     G_CALLBACK (configure_event), NULL);
  229.   g_signal_connect (G_OBJECT (drawing_area), "expose_event",
  230.                     G_CALLBACK (expose_event), NULL);
  231.   g_signal_connect (G_OBJECT (drawing_area), "unrealize",
  232.                     G_CALLBACK (unrealize), NULL);

  233.   g_signal_connect (G_OBJECT (drawing_area), "map_event",
  234.                     G_CALLBACK (map_event), NULL);
  235.   g_signal_connect (G_OBJECT (drawing_area), "unmap_event",
  236.                     G_CALLBACK (unmap_event), NULL);
  237.   g_signal_connect (G_OBJECT (drawing_area), "visibility_notify_event",
  238.                     G_CALLBACK (visibility_notify_event), NULL);

  239.   gtk_box_pack_start (GTK_BOX (vbox), drawing_area, TRUE, TRUE, 0);
  240.   gtk_widget_show (drawing_area);

  241.   /*
  242.    * Label.
  243.    */

  244.   label = gtk_label_new ("Toggle Animation");
  245.   gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 10);
  246.   gtk_widget_show (label);

  247.   /*
  248.    * Toggle button.
  249.    */

  250.   button = gtk_toggle_button_new ();

  251.   g_signal_connect_swapped (G_OBJECT (button), "toggled",
  252.                             G_CALLBACK (toggle_animation), drawing_area);

  253.   /* Add VBox. */
  254.   gtk_widget_show (vbox);
  255.   gtk_container_add (GTK_CONTAINER (button), vbox);

  256.   return button;
  257. }

  258. int
  259. main (int   argc,
  260.       char *argv[])
  261. {
  262.   GdkGLConfig *glconfig;
  263.   GtkWidget *window;
  264.   GtkWidget *button;

  265.   /*
  266.    * Init GTK.
  267.    */

  268.   gtk_init (&argc, &argv);

  269.   /*
  270.    * Init GtkGLExt.
  271.    */

  272.   gtk_gl_init (&argc, &argv);

  273.   /*
  274.    * Configure OpenGL-capable visual.
  275.    */

  276.   /* Try double-buffered visual */
  277.   glconfig = gdk_gl_config_new_by_mode (GDK_GL_MODE_RGB    |
  278.                                         GDK_GL_MODE_DEPTH  |
  279.                                         GDK_GL_MODE_DOUBLE);
  280.   if (glconfig == NULL)
  281.     {
  282.       g_print ("*** Cannot find the double-buffered visual.\n");
  283.       g_print ("*** Trying single-buffered visual.\n");

  284.       /* Try single-buffered visual */
  285.       glconfig = gdk_gl_config_new_by_mode (GDK_GL_MODE_RGB   |
  286.                                             GDK_GL_MODE_DEPTH);
  287.       if (glconfig == NULL)
  288.         {
  289.           g_print ("*** No appropriate OpenGL-capable visual found.\n");
  290.           exit (1);
  291.         }
  292.     }

  293.   /*
  294.    * Top-level window.
  295.    */

  296.   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  297.   gtk_window_set_title (GTK_WINDOW (window), "button");

  298.   /* Get automatically redrawn if any of their children changed allocation. */
  299.   gtk_container_set_reallocate_redraws (GTK_CONTAINER (window), TRUE);
  300.   /* Set border width. */
  301.   gtk_container_set_border_width (GTK_CONTAINER (window), 10);

  302.   g_signal_connect (G_OBJECT (window), "delete_event",
  303.                     G_CALLBACK (gtk_main_quit), NULL);

  304.   /*
  305.    * Toggle button which contains an OpenGL scene.
  306.    */

  307.   button = create_gl_toggle_button (glconfig);
  308.   gtk_widget_show (button);
  309.   gtk_container_add (GTK_CONTAINER (window), button);

  310.   /*
  311.    * Show window.
  312.    */

  313.   gtk_widget_show (window);

  314.   /*
  315.    * Main loop.
  316.    */

  317.   gtk_main ();

  318.   return 0;
  319. }


复制代码


出現下面錯誤 是否需要在安裝其他函式庫才能編譯上面代碼?


base.c:13:23: gtk/gtkgl.h: No such file or directory
base.c: In function `realize':
base.c:34: `GdkGLContext' undeclared (first use in this function)
base.c:34: (Each undeclared identifier is reported only once
base.c:34: for each function it appears in.)
base.c:34: `glcontext' undeclared (first use in this function)
base.c:35: `GdkGLDrawable' undeclared (first use in this function)
base.c:35: `gldrawable' undeclared (first use in this function)
base.c: In function `configure_event':
base.c:68: `GdkGLContext' undeclared (first use in this function)
base.c:68: `glcontext' undeclared (first use in this function)
base.c:69: `GdkGLDrawable' undeclared (first use in this function)
base.c:69: `gldrawable' undeclared (first use in this function)
base.c: In function `expose_event':
base.c:107: `GdkGLContext' undeclared (first use in this function)
base.c:107: `glcontext' undeclared (first use in this function)
base.c:108: `gldrawable' undeclared (first use in this function)
base.c: At top level:
base.c:254: parse error before '*' token
base.c: In function `create_gl_toggle_button':
base.c:277: `glconfig' undeclared (first use in this function)
base.c:280: `GDK_GL_RGBA_TYPE' undeclared (first use in this function)
base.c: In function `main':
base.c:329: `GdkGLConfig' undeclared (first use in this function)
base.c:329: `glconfig' undeclared (first use in this function)
base.c:350: `GDK_GL_MODE_RGB' undeclared (first use in this function)
base.c:351: `GDK_GL_MODE_DEPTH' undeclared (first use in this function)
base.c:352: `GDK_GL_MODE_DOUBLE' undeclared (first use in this function)






谢谢

[ 本帖最后由 shihyu 于 2007-3-27 12:31 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2007-03-27 23:01 |只看该作者
>> 还要再加上什么才可以关掉黑黑的DOS 画面?

编译的时候加上 -mwindows 选项以便创建 Windows 应用程序,而不是默认的控制台程序。

>> 出現下面錯誤 是否需要在安裝其他函式庫才能編譯上面代碼?

在 GTK 目录中有一个 gtkglext-examples 目录存放了很多使用 GtkGLExt 的例子。可到这个目录下去看看 Makefile.mingw 中编译和连接项的设置情况。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP