2010-09-26 3 views
1

Помогите мне!Почему я не могу скомпилировать GTK + с помощью MinGW?

Итак, я чувствую, что правильно настроил свою среду, но я не могу создать свою программу!

#include <cstdlib> 
#include <stdio.h> 
#include <stdlib.h> 
#include <gtk/gtk.h> 

using namespace std; 

/* 
* simple gtk application 
* author jan bodnar 
* date february 17, 2008 
*/ 

int main(int argc, char** argv) { 

GtkWidget *window; 
gtk_init(&argc, &argv); 

window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); 
gtk_window_set_default_size(GTK_WINDOW(window), 200, 100); 
gtk_window_set_title(GTK_WINDOW(window), "gtkapp"); 
gtk_widget_show(window); 

g_signal_connect(window, "destroy", 
    G_CALLBACK (gtk_main_quit), NULL); 

gtk_main(); 

return (EXIT_SUCCESS); 
} 

Я создал свой список включает каталоги из этой команды: PKG-конфигурации --cflags GTK + -2,0

Затем я добавил включать файлы в C++ настройках компилятора в NetBeans ...

Мои включают в себя каталоги:

 
../gtk/include/gtk-2.0 
../gtk/lib/gtk-2.0/include 
../gtk/include/atk-1.0 
../gtk/include/cairo 
../gtk/include/pango-1.0 
../gtk/include/glib-2.0 
../gtk/lib/glib-2.0/include 
../gtk/include/libpng12 

Затем я создал список LIBS из этой команды: PKG-конфигурации --libs GTK + -2,0

Затем добавляют мои LIBS к командной строке компоновщика в NetBeans с этим:

-LC:/tools/gtk/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl

Но до сих пор я не могу скомпилировать простую программу! Мне, должно быть, недостает чего-то глупого, но я не могу, чтобы жизнь меня поняла.

ошибки:

 
build/Debug/MinGW-Windows/main.o: In function `main': 
C:\Projects\glade_netbeans3\gtk_tut/main.cpp:24: undefined reference to `gtk_init_abi_check' 

C:\Projects\glade_netbeans3\gtk_tut/main.cpp:26: undefined reference to `gtk_window_new' 

C:\Projects\glade_netbeans3\gtk_tut/main.cpp:27: undefined reference to `gtk_window_get_type' 

C:\Projects\glade_netbeans3\gtk_tut/main.cpp:27: undefined reference to `g_type_check_instance_cast' 

C:\Projects\glade_netbeans3\gtk_tut/main.cpp:27: undefined reference to `gtk_window_set_position' 

C:\Projects\glade_netbeans3\gtk_tut/main.cpp:28: undefined reference to `gtk_window_get_type' 

C:\Projects\glade_netbeans3\gtk_tut/main.cpp:28: undefined reference to `g_type_check_instance_cast' 

C:\Projects\glade_netbeans3\gtk_tut/main.cpp:28: undefined reference to `gtk_window_set_default_size' 

C:\Projects\glade_netbeans3\gtk_tut/main.cpp:29: undefined reference to `gtk_window_get_type' 

C:\Projects\glade_netbeans3\gtk_tut/main.cpp:29: undefined reference to `g_type_check_instance_cast' 

C:\Projects\glade_netbeans3\gtk_tut/main.cpp:29: undefined reference to `gtk_window_set_title' 

C:\Projects\glade_netbeans3\gtk_tut/main.cpp:30: undefined reference to `gtk_widget_show' 

C:\Projects\glade_netbeans3\gtk_tut/main.cpp:33: undefined reference to `gtk_main_quit' 

C:\Projects\glade_netbeans3\gtk_tut/main.cpp:33: undefined reference to `g_signal_connect_data' 

C:\Projects\glade_netbeans3\gtk_tut/main.cpp:35: undefined reference to `gtk_mainmake[2]: Leaving directory `/c/Projects/glade_netbeans3/gtk_tut' 

' 
collect2: ld returned 1 exit status 
make[2]: *** [dist/Debug/MinGW-Windows/gtk_tut.exe] Error 1 
make[1]: *** [.build-conf] Error 2 
make: *** [.build-impl] Error 2 
make[1]: Leaving directory `/c/Projects/glade_netbeans3/gtk_tut' 

BUILD FAILED (exit value 2, total time: 1s) 

Сделать файл генерируется Netbeans:

# 
# There exist several targets which are by default empty and which can be 
# used for execution of your targets. These targets are usually executed 
# before and after some main targets. They are: 
# 
#  .build-pre:    called before 'build' target 
#  .build-post:    called after 'build' target 
#  .clean-pre:    called before 'clean' target 
#  .clean-post:    called after 'clean' target 
#  .clobber-pre:   called before 'clobber' target 
#  .clobber-post:   called after 'clobber' target 
#  .all-pre:    called before 'all' target 
#  .all-post:    called after 'all' target 
#  .help-pre:    called before 'help' target 
#  .help-post:    called after 'help' target 
# 
# Targets beginning with '.' are not intended to be called on their own. 
# 
# Main targets can be executed directly, and they are: 
# 
#  build     build a specific configuration 
#  clean     remove built files from a configuration 
#  clobber     remove all built files 
#  all      build all configurations 
#  help      print help mesage 
# 
# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and 
# .help-impl are implemented in nbproject/makefile-impl.mk. 
# 
# Available make variables: 
# 
#  CND_BASEDIR    base directory for relative paths 
#  CND_DISTDIR    default top distribution directory (build artifacts) 
#  CND_BUILDDIR    default top build directory (object files, ...) 
#  CONF      name of current configuration 
#  CND_PLATFORM_${CONF}  platform name (current configuration) 
#  CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration) 
#  CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration) 
#  CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration) 
#  CND_PACKAGE_DIR_${CONF} directory of package (current configuration) 
#  CND_PACKAGE_NAME_${CONF} name of package (current configuration) 
#  CND_PACKAGE_PATH_${CONF} path to package (current configuration) 
# 
# NOCDDL 


# Environment 
MKDIR=mkdir 
CP=cp 
CCADMIN=CCadmin 


# build 
build: .build-post 

.build-pre: 
# Add your pre 'build' code here... 

.build-post: .build-impl 
# Add your post 'build' code here... 


# clean 
clean: .clean-post 

.clean-pre: 
# Add your pre 'clean' code here... 

.clean-post: .clean-impl 
# Add your post 'clean' code here... 


# clobber 
clobber: .clobber-post 

.clobber-pre: 
# Add your pre 'clobber' code here... 

.clobber-post: .clobber-impl 
# Add your post 'clobber' code here... 


# all 
all: .all-post 

.all-pre: 
# Add your pre 'all' code here... 

.all-post: .all-impl 
# Add your post 'all' code here... 


# build tests 
build-tests: .build-tests-post 

.build-tests-pre: 
# Add your pre 'build-tests' code here... 

.build-tests-post: .build-tests-impl 
# Add your post 'build-tests' code here... 


# run tests 
test: .test-post 

.test-pre: 
# Add your pre 'test' code here... 

.test-post: .test-impl 
# Add your post 'test' code here... 


# help 
help: .help-post 

.help-pre: 
# Add your pre 'help' code here... 

.help-post: .help-impl 
# Add your post 'help' code here... 



# include project implementation makefile 
include nbproject/Makefile-impl.mk 

# include project make variables 
include nbproject/Makefile-variables.mk 
+1

Netbeans не является компилятором. Какой компилятор вы используете? –

+0

Хмм .. смог разобраться с выходом. Для дальнейшего использования ваш компилятор - MinGW, а не Netbeans. –

+0

Да, я знаю, я оставил это ... Извините! – JohnStudio

ответ

0

Ваша программа компилируется, но не связывает. Проблема в том, что, поскольку вам нужно включить все каталоги для включения всех заголовков, вы также должны указать каталоги для библиотек. Подводя итог: проблема в том, что netbeans не может найти библиотеки для ссылки.

В своем проекте перейдите в раздел «Свойства», «Ссылка» и в «Дополнительные каталоги библиотек», вам нужно будет указать все каталоги, которые включают библиотеки в дистрибутиве Gtkmm.

Надеюсь, что это поможет.

+0

Хорошо, что я делаю ... Добавить все файлы заголовков в C++ «Additional Include Dir's». Затем в настройках компоновщика поместите это в «Дополнительная командная строка» -LC:/tools/gtk/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lgdk_pixbuf-2.0 -lpangowin32- 1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl – JohnStudio

+0

Каталог lib добавлен в «Дополнительный lib Dirs» в компоновщике, а также находится в PATH. Итак, я не понимаю, почему он не может связываться?Я также добавил файлы всех файлов заголовков в дополнительные каталоги Linker, без везения! – JohnStudio

+0

Хорошо, получилось, что ссылка ... не должна была добавлять их в командную строку, но настройки libs ... Я знал, что это будет глупо! – JohnStudio

 Смежные вопросы

  • Нет связанных вопросов^_^