【发布时间】:2016-03-26 12:01:58
【问题描述】:
我正在学习汇编程序 (FASM),但遇到了奇怪的问题,每当我想调用 gtk_main_quit() 时,它总是以“分段错误”结束。
为什么调用 gtk_main_quit 会导致分段错误?
test.asm
format ELF
extrn gtk_init
extrn gtk_main
extrn gtk_main_quit
extrn gtk_window_new
extrn gtk_widget_show
extrn g_signal_connect_data
public main
on_window_close:
call gtk_main_quit ; <- segmentation fault
ret
main:
push 0
push 0
call gtk_init
add esp, 8
push 0
call gtk_window_new
add esp, 4
mov [window_handle], eax
push 0
push 0
push 0
push on_window_close
push on_close_signal
push [window_handle]
call g_signal_connect_data
add esp, 24
push [window_handle]
call gtk_widget_show
add esp, 8
call gtk_main
window_handle dd 0
on_close_signal db 'destroy', 0
制作文件
all:
~/apps/fasm/fasm ./test.asm
gcc -o test test.o `pkg-config --cflags --libs gtk+-3.0`
【问题讨论】:
-
@MichaelPetch 哈哈,它有帮助,谢谢:D
标签: assembly x86 segmentation-fault gtk gtk3