2011-02-13 59 views
1

当试图使用代码:: Blocks的编译与GTK +出现的例子:问题的链接库和GTK +

 
#include stdlib.h 
#include gtk/gtk.h 

static void helloWorld (GtkWidget *wid, GtkWidget *win) 
{ 
    GtkWidget *dialog = NULL; 

    dialog = gtk_message_dialog_new (GTK_WINDOW (win), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "Hello World!"); 
    gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER); 
    gtk_dialog_run (GTK_DIALOG (dialog)); 
    gtk_widget_destroy (dialog); 
} 

int main (int argc, char *argv[]) 
{ 
    GtkWidget *button = NULL; 
    GtkWidget *win = NULL; 
    GtkWidget *vbox = NULL; 

    /* Initialize GTK+ */ 
    g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL); 
    gtk_init (&argc, &argv); 
    g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL); 

    /* Create the main window */ 
    win = gtk_window_new (GTK_WINDOW_TOPLEVEL); 
    gtk_container_set_border_width (GTK_CONTAINER (win), 8); 
    gtk_window_set_title (GTK_WINDOW (win), "Hello World"); 
    gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER); 
    gtk_widget_realize (win); 
    g_signal_connect (win, "destroy", gtk_main_quit, NULL); 

    /* Create a vertical box with buttons */ 
    vbox = gtk_vbox_new (TRUE, 6); 
    gtk_container_add (GTK_CONTAINER (win), vbox); 

    button = gtk_button_new_from_stock (GTK_STOCK_DIALOG_INFO); 
    g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (helloWorld), (gpointer) win); 
    gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0); 

    button = gtk_button_new_from_stock (GTK_STOCK_CLOSE); 
    g_signal_connect (button, "clicked", gtk_main_quit, NULL); 
    gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0); 

    /* Enter the main loop */ 
    gtk_widget_show_all (win); 
    gtk_main(); 
    return 0; 
} 

我收到以下错误:

 
ld.exe||cannot find -lgobject-2.0| 
ld.exe||cannot find -lglib-2.0| 
||=== Build finished: 2 errors, 0 warnings ===| 

我已经首尾相连到该项目,但我找不到一种方法使其工作。我已经尝试了http://www.gtk.org/download-windows.html的捆绑包和分离包。我很确定它一定是简单/愚蠢的,但我找不到任何可以帮助我解决这个问题的东西。

+0

你是如何构建你的代码?你使用的是什么命令? – chrisaycock 2011-02-13 03:02:22

+0

即使我现在有办法解决它,我在哪里可以找到Code :: Blocks中的完整构建命令? – Filgera 2011-02-13 03:35:25

回答

2

您是否已将包含libglib-2.0.a,libgobject-2.0.a文件的GTK目录添加到链接程序搜索目录中。
这可以通过以下路径完成:
Settings | Compiler and debugger... | Search directories | Linker | Add

编译器/链接器的完整命令行可以在Build Log窗口中查看。要启用此去:
Settings | Compiler and debugger... | Other Settings | Compiler logging | Full command line

我没碰到过丢失的入口点问题,所以也许你的GTK的副本已损坏到来。从GTK+ 2.22

下载All-in-one软件包确保您添加的所有包含目录中Search directories | Compiler

作为一个侧面说明,你可能需要编译使用-mms-bitfields您的项目,可以在补充道: Settings | Compiler and debugger... | Other options只需粘贴标志。

0

当代码::块运行ld.exe而不是用调用它,例如:-l glib-2.0它与代码的lib的名称前-lglib-2.0

添加空间调用它::块的连接选项应该可以解决它。