Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2010, 14:41   #1
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию Assembler + GTK+

Здравствуйте.
Решил поразвлечься с Assembler'ом
Написал небольшое приложение, но оно не хочет работать.
Код:
.data
window:
	.space 4
destroy:
	.string "destroy"
.text
.globl main
main:
	pushl $0
	pushl $0
	call gtk_init /* gtk_init(NULL, NULL); */
	
	pushl $0
	call gtk_window_new
	movl %eax, window /* window = gtk_window_new(0); */
	
	pushl $80 /* G_TYPE_MAKE_FUNDAMENTAL(20) */
	pushl window
	call g_type_check_instance_cast
	
	pushl $0
	pushl $0
	pushl $0
	pushl $0
	pushl $0
	pushl $gtk_main_quit
	pushl destroy
	pushl %eax
	call gtk_signal_connect_full /* gtk_signal_connect_full(GTK_OBJECT (window), "destroy", gtk_main_quit, NULL, 0, 0, 0, 0); */
	
	pushl window
	call gtk_widget_show /* gtk_widget_show(window); */
	
	call gtk_main /* gtk_main(); */
	
	addl $56, %esp
	ret
Оно компилируется и линкуется, но выдает ошибку на строчке:
Код:
call gtk_signal_connect_full.
Ошибка в консоли звучит так:
Код:
(bug-buddy:6465): Gtk-CRITICAL **: gtk_text_buffer_emit_insert: assertion `g_utf8_validate (text, len, NULL)' failed
На экран же выползает всем знакомое окошко bug-buddy с предложением отправить отчет.
Вот содержание отчета.
Смотрел листинг программы на C и там вызов примерно такой же.
Честно говоря, я несколько в недоумении, ибо не вижу причин для ошибок.
Компилирую так:
Код:
gcc -g `pkg-config gtk+-2.0 --cflags --libs` 1.s -o 1
Заранее благодарен за помощь.
pushl $0x18E3DF6B
call ICQ

Последний раз редактировалось russian-stalker; 05.12.2010 в 14:49.
russian-stalker вне форума Ответить с цитированием
Старый 05.12.2010, 15:38   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

У вас исходник в какой кодировке? Строка то наверное не утф8...
p51x вне форума Ответить с цитированием
Старый 05.12.2010, 15:44   #3
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Кодировка файла - UTF8
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 06.12.2010, 08:48   #4
xrnd
Пользователь
 
Регистрация: 27.09.2010
Сообщений: 18
По умолчанию

Подобная ошибка у меня возникала при попытке добавить не-UTF8 текст в текстовый виджет.
xrnd вне форума Ответить с цитированием
Старый 08.12.2010, 13:48   #5
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Исправил. Ошибка была наиглупейшая. Вместо того, чтобы передать указатель на строку, я передавал саму строку.
Поменял pushl destroy на pushl $destroy и все заработало. Всем спасибо.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кроссплатформенный анимированный осциллограф (GTK+, Cairo) oleg kutkov Qt и кроссплатформенное программирование С/С++ 15 22.10.2015 20:13
проблема с программой gtk heart Общие вопросы C/C++ 2 30.01.2010 13:00
Задержка в программе на gtk abr_question Общие вопросы C/C++ 6 21.12.2009 23:54
gtk+glade+c heart C++ Builder 16 13.12.2009 17:08