easyffi を使ってみたんだけど、なにがなんだかわからない
Vala のサンプルを見て書いてみた:
(require-extension easyffi) (foreign-parse/declare "#include <gtk/gtk.h>") (define-external (_gtk_main_quit_gtk_widget_destroy ((pointer "GtkWidget") _sender) (c-pointer data)) void (gtk_main_quit)) (define-external (_button_did_clicked ((pointer "GtkButton") _sender) (c-pointer data)) void (gtk_button_set_label _sender "Thank you")) ;; gtk_init を呼び出します。 (foreign-code "gtk_init( &C_main_argc, &C_main_argv );") (define window (gtk_window_new GTK_WINDOW_TOPLEVEL)) (gtk_window_set_title window "First GTK+ Program") (gtk_container_set_border_width window 10) (g_object_set window "window-position" GTK_WIN_POS_CENTER NULL) (gtk_window_set_default_size window 370 70) (g_signal_connect window "destroy" #$_gtk_main_quit_gtk_widget_destroy #f) (define button (gtk_button_new_with_label "Click me!")) (g_signal_connect button "clicked" #$_button_did_clicked #f) (gtk_container_add window button) (gtk_widget_show_all window) (gtk_main)