Linux & GTK+ Линкер ругачий..

Тема в разделе "WASM.BEGINNERS", создана пользователем Qorlum, 13 окт 2009.

  1. Qorlum

    Qorlum New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2009
    Сообщения:
    26
    Код (Text):
    1. qorlum@qorlum:~/Документы/Projects/Window$ gcc -Wall -s -O3  window.o -o window `gtk-config --cflags` `gtk-config --libs`
    2. window.o: In function `main':
    3. (.text+0xb0): undefined reference to `gtk_widget_set_size_request'
    4. collect2: выполнение ld завершилось с кодом возврата 1
    При линковке выдает эту ошибку... Чувствую себя ослом..=(



    Вот код...
    Код (Text):
    1. proc main argc, argv
    2.  
    3.  
    4.  
    5.     lea eax, [argc]
    6.  
    7.     lea ebx, [argv]
    8.  
    9.  
    10.  
    11.     ccall gtk_init, eax, ebx
    12.  
    13.  
    14.  
    15.     ccall gtk_window_new, GTK_WINDOW_TOPLEVEL
    16.  
    17.     mov [hWindow], eax
    18.  
    19.  
    20.     ccall gtk_button_new_with_label, szClickMe
    21.  
    22.     mov [hButton], eax
    23.  
    24.  
    25.  
    26.     ccall gtk_signal_connect, [hWindow], szDeleteEvent, DeleteEvent
    27.  
    28.     ccall gtk_signal_connect, [hButton], szClicked, ButtonClick
    29.  
    30.  
    31.  
    32.     ccall gtk_container_add, [hWindow], [hButton]
    33.  
    34.  
    35.  
    36.     ;ccall gtk_container_set_border_width, [hWindow], 10
    37.  
    38.     ccall gtk_window_set_default_size, [hWindow],640, 480
    39.  
    40.  
    41.     ccall gtk_widget_set_uposition, [hButton],100,150
    42.  
    43.     ccall gtk_widget_set_size_request, [hButton], 20,50
    44.  
    45.  
    46.     ccall gtk_widget_show, [hButton]
    47.  
    48.  
    49.  
    50.     ccall gtk_widget_show, [hWindow]
    51.  
    52.  
    53.  
    54.     call gtk_main
    55.  
    56.  
    57.  
    58.     ret
    59.  
    60.  
    61.  
    62. endp
    До него написано extrn ccall gtk_widget_set_size_request

    Уже часа 3 бьюсь головой об стену... Не могу понять что не так... Остальные функции главное норм а эта...

    мб я че то не установил...

    Помогите..
     
  2. Clear__Energy

    Clear__Energy New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2009
    Сообщения:
    432
    Укажи компоновщику, где лежит либа, экспортрующая gtk_widget_set_size_request.
    Сам не знаю - гном не пользую. Гугли, вобщем.
     
  3. Qorlum

    Qorlum New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2009
    Сообщения:
    26
    Описался надо "До него написано extrn gtk_widget_set_size_reques"
     
  4. Qorlum

    Qorlum New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2009
    Сообщения:
    26
    gtk-config --cflags
    -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include


    В общем я нашел хедер по данному пути (/usr/include/gtk-1.2/gtk) в котором описаниа данная функция...
    Почему если она там есть линкер мне пишет такое...?

    Может я чушь несу.. ;)
     
  5. Clear__Energy

    Clear__Energy New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2009
    Сообщения:
    432
    Потому что компоновщик не знает в какой библиотеке находится эта функция.
     
  6. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    Загадочно.
    А что за gtk-config? Я по жизни использую `pkg-config --libs gtk+-2.0'. Может gtk-config -- это от gtk-1.x? Собственно проверить не могу, ибо у меня:
    Код (Text):
    1. [rgo ~]$ gtk-config --libs
    2. bash: gtk-config: команда не найдена
    И в то же время:
    Код (Text):
    1. [rgo ~]$ pkg-config --libs gtk+-2.0
    2. -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0
     
  7. Qorlum

    Qorlum New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2009
    Сообщения:
    26
    Парни может скажите как сделать, чтобы знал?
    ничего не смог нагуглить...
    Где путь то писать
    Хелп...
     
  8. Qorlum

    Qorlum New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2009
    Сообщения:
    26
    Кстати на pcg-config у меня выдает

    Код (Text):
    1. qorlum@qorlum:~/Документы/Projects/Window$ gcc -Wall -s -O3  window.o -o window `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`
    2. window.o: In function `main':
    3. (.text+0x45): undefined reference to `gtk_signal_connect'
    4. window.o: In function `main':
    5. (.text+0x5d): undefined reference to `gtk_signal_connect'
    6. collect2: выполнение ld завершилось с кодом возврата 1
     
  9. Qorlum

    Qorlum New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2009
    Сообщения:
    26
    Код (Text):
    1. -L/usr/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm
    вот у меня чо пишет...
     
  10. Qorlum

    Qorlum New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2009
    Сообщения:
    26
    я подумываю над этим... :)
    А пока решил задачу другой функцией...
     
  11. Qorlum

    Qorlum New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2009
    Сообщения:
    26
    Почему не работает set_usize в данном коде
    Код (Text):
    1. format ELF
    2.  
    3.  
    4.  
    5. include 'cdecl.inc'
    6.  
    7. include 'gtk.inc'
    8.  
    9.  
    10.  
    11. public main
    12.  
    13.  
    14.  
    15. ; extrn blah
    16.  
    17. extrn gtk_init
    18.  
    19. extrn gtk_window_new
    20. extrn gtk_button_new_with_label
    21.  
    22. extrn gtk_signal_connect_full
    23.  
    24. extrn gtk_container_add
    25.  
    26. extrn gtk_container_set_border_width
    27.  
    28. extrn gtk_widget_show
    29. extrn gtk_main
    30. extrn gtk_widget_set_size_request
    31. extrn gtk_window_set_default_size
    32. extrn gtk_widget_set_uposition
    33. extrn gtk_widget_set_usize
    34.  
    35. extrn g_print
    36. extrn exit
    37. section '.data' writeable
    38.  
    39.  
    40.  
    41.     szDeleteEvent   db "delete_event", 0
    42.  
    43.     szExitMsg       db "closing application...", 10, 10, 0
    44.  
    45.     szClicked       db "clicked", 0
    46.  
    47.     szClickMe       db "Click me!", 0
    48.  
    49.     szWasClicked    db "Button was clicked...", 10, 10, 0
    50.  
    51.  
    52.  
    53. section '.bss' writeable
    54.  
    55.  
    56.  
    57.     hWindow         dd ?
    58.     hButton     dd ?
    59.  
    60.  
    61.  
    62. section '.text' executable
    63.  
    64.  
    65.  
    66. proc main argc, argv
    67.  
    68.  
    69.  
    70.     lea eax, [argc]
    71.  
    72.     lea ebx, [argv]
    73.  
    74.  
    75.  
    76.     ccall gtk_init, eax, ebx
    77.  
    78.  
    79.  
    80.     ccall gtk_window_new, GTK_WINDOW_TOPLEVEL
    81.  
    82.     mov [hWindow], eax
    83.  
    84.  
    85.     ccall gtk_button_new_with_label, szClickMe
    86.  
    87.     mov [hButton], eax
    88.  
    89.  
    90.  
    91.     ccall gtk_signal_connect_full, [hWindow], szDeleteEvent, DeleteEvent, 0,0,0,0,0
    92.  
    93.     ccall gtk_signal_connect_full, [hButton], szClicked, ButtonClick, 0,0,0,0,0
    94.  
    95.  
    96.  
    97.     ccall gtk_container_add, [hWindow], [hButton]
    98.  
    99.  
    100.  
    101.     ;ccall gtk_container_set_border_width, [hWindow], 200
    102.  
    103.     ccall gtk_window_set_default_size, [hWindow],640, 480
    104.  
    105.  
    106.     ccall gtk_widget_set_uposition, [hButton],100,150
    107.  
    108.     ccall gtk_widget_set_usize, [hButton],50,140
    109.  
    110.     ccall gtk_widget_set_size_request, [hButton],50,140
    111.  
    112.  
    113.     ccall gtk_widget_show, [hButton]
    114.  
    115.  
    116.  
    117.     ccall gtk_widget_show, [hWindow]
    118.  
    119.  
    120.  
    121.     call gtk_main
    122.  
    123.  
    124.  
    125.     ret
    126.  
    127.  
    128.  
    129. endp
    130.  
    131. proc ButtonClick widget, gdata
    132.  
    133.     ccall g_print, szWasClicked
    134.  
    135.     ret
    136.  
    137. endp
    138.  
    139. proc DeleteEvent widget, gdata
    140.  
    141.     ccall g_print, szExitMsg
    142.  
    143.     ccall exit, 0
    144.  
    145.     ret
    146.  
    147. endp
     
  12. Qorlum

    Qorlum New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2009
    Сообщения:
    26
    Получается вот так как то(1)..., хотя должны ставится размеры кнопы и получаться вот так(2) (то есть должны выставляться размеры кнопы)... В заголовках смторел данная функция присутсявует
    1 2
    |-----------------------------------------------------------------| |-----------------------------------------------------------------|
    | | | |
    | | | |
    | | | |
    | г ----------------------------------------| | г ----------------------------------------|
    | | | | | |
    | | | | | Button |
    | | | | |_______________________ |
    | | Button | | |
    | | | | |
    | | | | |
    | | | | |
    |_____________|________________________| |_____________________________________|


    ???
     
  13. Qorlum

    Qorlum New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2009
    Сообщения:
    26
    Вообще писать под линь на асме извращенство...=)
    Ну если тебе такой способ не нравится предложи другой способ GUI сделать...
     
  14. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    а чем программирование под GTK отличается от дёргания похожих функций под Windows?
     
  15. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    слушай... Я во чего вспомнил, а ведь gtk_signal_connect -- это что-то устаревшее в gtk+, не? я давненько не пользовался gtk+, но вроде тогда напротив этих функций в доках стояло `deprecated', и рекомендовали пользоваться g_signal_connect. Сравни-ка используемую версияю gtk+ и версию, документацию к которой ты читаешь.