我正在摆弄Eclipse的C/C++版本来构建一个简单的GTK应用程序.但是,我似乎无法从Eclipse中编译GTK示例.我可以编译一个简单的Hello World样式测试应用程序,所以我知道工具链本身正在工作.但是,当我开始将GTK添加到混合中时,编译器会出现错误.有趣的是,我可以在Eclipse环境之外编译示例.例如,我正在使用此页面上的示例并按照给出的说明让我构建一个工作二进制文件.
我认为第一个问题是当我尝试在Eclipse中编译时,主要的GTK包含文件被引用不同.我可以编译的非Eclipse版本(如示例中所示):
#include <gtk/gtk.h>
Run Code Online (Sandbox Code Playgroud)
但是,在Eclipse中,这不起作用.我需要将其更改为:
#include <gtk-2.0/gtk/gtk.h>
Run Code Online (Sandbox Code Playgroud)
然后可以找到包含文件,但编译过程然后开始抛出有关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;
}
Run Code Online (Sandbox Code Playgroud)
导致这些错误:
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
Run Code Online (Sandbox Code Playgroud)
不知道该怎么做.非常感谢任何帮助.
右键单击Eclipse项目并选择属性.从Configuration下拉列表中选择[ All configurations ].然后在"工具设置"选项卡上选择GCC C Compiler(默认)并将以下内容添加到末尾Command line pattern("专家设置")框:
`pkg-config --cflags --libs gtk+-2.0`
Run Code Online (Sandbox Code Playgroud)
为GCC C Linker选项做同样的事情.
如果你不想用gtk-2.0启动你的包含路径,那么也像aardvark建议的那样添加include目录(/usr/include/gtk-2.0).
| 归档时间: |
|
| 查看次数: |
20186 次 |
| 最近记录: |