我已经构建了一些玩具C++库来快速创建一个来自Lisp的Qt窗口.我知道common-qt存在,我只是想学习如何使用cffi.
现在,我有4个绑定功能:
这是一个完美运行的lisp代码:
(defctype t-app :pointer)
(defctype t-window :pointer)
(defcfun (create-application "create_application" ) t-app)
(defcfun (exec "exec") :void (app t-app))
(defcfun (create-window-aalt "create_window_aalt") t-window)
(defcfun (show "show") :void (o t-window))
(defparameter a (create-application))
(defparameter w (create-window-aalt))
(show w)
(exec a)
Run Code Online (Sandbox Code Playgroud)
但如果我使用LET或LET*......我有内存故障!
(let* ((a (create-application)) (w (create-window-aalt)))
(show w)
(exec a))
CORRUPTION WARNING in SBCL pid 1312(tid 140737353860992):
Memory fault at a556508 (pc=0x7ffff659b7f1, sp=0x7ffff2bbe688)
The integrity of this image is possibly compromised.
Exiting.
Run Code Online (Sandbox Code Playgroud)
有人知道为什么吗?
我正在使用SBCL:
env …Run Code Online (Sandbox Code Playgroud) 我正在使用vim有一个编辑器.JSX编译交换/临时文件.我怎么能避免这种情况?
命令行 :
jsx --extension js --watch src/ build/
Run Code Online (Sandbox Code Playgroud)
我在stdout中看到的内容:
.helloworld.js.swp changed; rebuilding...
["helloworld"]
["helloworld"]
helloworld.js~ changed; rebuilding...
helloworld.js~ changed; rebuilding...
["helloworld"]
["helloworld"]
Run Code Online (Sandbox Code Playgroud)
谢谢.:)