cl-gtk2 и ms-windows
Oct. 4th, 2009 12:48 pmСегодня удалось запустить cl-gtk2 под windows.
Простая проблема была в том, что неправильно были описаны gtk'шные библиотеки (неправильные имена файлов).
Чуть более сложная проблема была в том, что CFFI оптимизировал вызов foreign-funcall с константным аргументом. А виндовый порт SBCL пытался прилинковать вызываемую функцию при компиляции даже в том случае, если вызов никогда не происходил. До оптимизации (foreign-funcall-pointer (foreign-symbol-pointer ...) ...) авторы CFFI не дошли, что хорошо:)
Текущая версия cl-gtk2 работает только с достаточно свежей версией Gtk+-2.16. Взять ее можно здесь. После распаковки библиотек следует добавить путь к gtk/bin в PATH, чтобы CFFI нашел библиотеки. Либо же можно добавить путь к gtk/bin в CFFI:*FOREIGN-LIBRARY-DIRECTORIES*. Для работы GtkGlExt аналогично следует установить GtkGlExt, GLUT (раз и два)
На удивление, все заработало почти сразу же - включая даже GtkGlExt - glut'овский чайник крутился на демке.
Но по не выясненным пока причинам, если запускать cl-gtk2 из Slime, то вызов gtk-main приводит к зависанию SBCL. Похоже, что swank делает что-то с файлами/select'ом/сигналами, что плохо взаимодействует с gtk'шным циклом обработки сообщений.