簡體   English   中英

如何在Windows(MSYS)上使用GTK +和GCC編譯Glade / XML

[英]How do you compile a Glade/XML with GTK+ and GCC on Windows (MSYS)

大家好,我最近開始用C在Glade中涉獵。我已經可以在C中編譯一些GTK +應用程序,但是在使用glade文件編譯以下C文件時,我總是遇到編譯錯誤(摘自Micah Carrick的教程)

main.c

#include <gtk/gtk.h>

void 
on_window_destroy (GtkObject *object, gpointer user_data)
{
    gtk_main_quit ();
}

int
main (int argc, char *argv[])
{
    GtkBuilder      *builder; 
    GtkWidget       *window;

    gtk_init (&argc, &argv);

    builder = gtk_builder_new ();
    gtk_builder_add_from_file (builder, "tutorial.glade", NULL);
    window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
    gtk_builder_connect_signals (builder, NULL);

    g_object_unref (G_OBJECT (builder));

    gtk_widget_show (window);                
    gtk_main ();

    return (0);
}

tutorial.glade

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
<!--Generated with glade3 3.4.0 on Tue Nov 20 14:05:37 2007 -->
<glade-interface>
  <widget class="GtkWindow" id="window1">
    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
    <child>
      <placeholder/>
    </child>
  </widget>
</glade-interface>

並在MSYS中使用以下命令進行編譯:

gcc -Wall -g -mwindows -O2 main.c -o program.exe `pkg-config --cflags --libs gtk+-3.0`

我收到以下錯誤:

main.c:4:20: error: unknown type name 'GtkObject'
 on_window_destroy (GtkObject *object, gpointer user_data)
                    ^

我嘗試使用將tutorial.glade更改為XML文件,但沒有進行任何更改。 也許我必須將GtkObject重命名為其他名稱,或者錯過了編譯標志? 抱歉,如果這是一個菜鳥問題,仍在學習:S

GtkObject更改為GtkWidget 在使用當前的3.0 API進行編譯時,您的教程似乎使用了舊的GTK 2.0 API。

我建議向托管該教程的人發送電子郵件,以對其進行更新,或者至少在該教程的上方放置警告標語,指出該教程使用了過時的API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM