LISPのソースをWindowsアプリケーションとしてビルドする方法。
展開したclisp<ビルドバージョン>\base下のlisp.exeとlispinit.memを使用する。LISPソースをhoge.lispとして、
lisp.exe -M lispinit.mem -x "(load \"hoge.lisp\")
(ext:saveinitmem \"hoge\" :init-function #'main :executable t :norc t)"
これで実行ファイルが出来るんだけどね。できた「hoge.exe」をダブルクリックすると「なんとかdllがねーYO!」と怒られるので、あらかじめclisp<ビルドバージョン>\baseにパスを通しておくか、「libintl-8.dll」と「readline5.dll」(と「libiconv-2.dll」も?)をそれらしきところにコピーしておくと吉。
で、もう一回ダブルクリックすると、今度はCommand Promptも立ち上がってくるという大罠。
どうすればいいんだろうな?
ちなみに、ソースはこんな感じ。
(use-package "FFI")
(def-call-out messagebox
(:name "MessageBoxA")
(:library "user32.dll")
(:arguments (hwnd int) (text c-string) (capt c-string) (type uint))
(:return-type int)
(:language :stdc))
(defun main()
(messagebox 0 "Hello World!" "Message" 0)
(quit))