代码之家  ›  专栏  ›  技术社区  ›  Luke

在Eclipse中编译C/GTK

  •  8
  • Luke  · 技术社区  · 15 年前

    我正在玩弄Eclipse的C/C++版本来构建一个简单的GTK应用程序。然而,我似乎无法从Eclipse中编译GTK示例。我可以编译一个简单的hello world风格的测试应用程序,所以我知道工具链本身正在工作。然而,当我开始向混合中添加gtk时,编译器就会出现错误。有趣的是,我可以很好地编译Eclipse环境之外的示例。例如,我正在使用 this 按照这里给出的说明,让我构建一个工作的二进制文件。

    我认为第一个问题是当我尝试在Eclipse中编译时,主gtk include文件的引用方式不同。我可以编译的非Eclipse版本(如示例中所示):

    #include <gtk/gtk.h>
    

    然而,在Eclipse中,这不起作用。我需要将其更改为:

    #include <gtk-2.0/gtk/gtk.h>
    

    然后可以找到include文件,但编译过程随后开始抛出有关gtkwidget类型的错误。例如。:

    #include <gtk-2.0/gtk/gtk.h>
    
    int main( int argc, char *argv[] )
    {
        GtkWidget *window;
    
        gtk_init (&argc, &argv);
    
        window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_widget_show  (window);
    
        gtk_main ();
    
        return 0;
    }
    

    导致这些错误:

    make all 
    Building file: ../src/main.c
    Invoking: GCC C Compiler
    gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/main.d" -MT"src/main.d" -o"src/main.o" "../src/main.c"
    ../src/main.c: In function ‘main’:
    ../src/main.c:7: error: ‘GtkWidget’ undeclared (first use in this function)
    ../src/main.c:7: error: (Each undeclared identifier is reported only once
    ../src/main.c:7: error: for each function it appears in.)
    ../src/main.c:7: error: ‘window’ undeclared (first use in this function)
    ../src/main.c:9: warning: implicit declaration of function ‘gtk_init’
    ../src/main.c:11: warning: implicit declaration of function ‘gtk_window_new’
    ../src/main.c:11: error: ‘GTK_WINDOW_TOPLEVEL’ undeclared (first use in this function)
    ../src/main.c:12: warning: implicit declaration of function ‘gtk_widget_show’
    ../src/main.c:14: warning: implicit declaration of function ‘gtk_main’
    make: *** [src/main.o] Error 1
    

    不知道该怎么办。任何帮助都将不胜感激。

    3 回复  |  直到 13 年前
        1
  •  8
  •   Luke    15 年前

    右键单击Eclipse项目并选择属性。从配置下拉列表中,选择 [ All configurations ] . 然后在“工具设置”选项卡上选择 GCC C Compiler (默认)并在末尾添加以下内容 Command line pattern (专家设置)框:

    `pkg-config --cflags --libs gtk+-2.0`
    

    为…做同样的事 GCC C Linker 选择权。

    如果您不想用gtk-2.0启动include路径,那么也可以像aardvark建议的那样添加include目录(/usr/include/gtk-2.0)。

        2
  •  3
  •   Bruce Alderman    15 年前

    尝试将gtk目录添加到生成路径:

    进入项目属性-gt/c+c+-gu& & gt;设置& gt;工具设置-&目录;并在包含路径下添加它。

        3
  •  1
  •   Petri Tuononen    13 年前

    考虑到对EclipseCDT的pkg配置支持,等待已久的缓解即将到来。

    该项支持正在开发中,并将于8月左右整合到CDT中。

    最重要的特性是,一个易于使用的用户界面允许选择所需的包。

    项目网站: http://code.google.com/p/pkg-config-support-for-eclipse-cdt/

    更新: 请随意测试测试版:
    http://marketplace.eclipse.org/content/pkg-config-support-eclipse-cdt
    感谢您的反馈!