Ocaml Graphics.open_graph在脚本模式下不起作用



我正在尝试使用ocaml图形模块。线路:

#Graphics.open_graph "";;

在交互模块中运行良好,即X11中弹出一个白色背景的小窗口。然而,当我尝试使用脚本模式时——将这一行放在文件中,然后编译它:

ocamlc -o a.out graphics.cma code.ml

只有X11启动,但没有弹出窗口。我在用mac。有人知道为什么吗?谢谢


跟进:

在脚本模式下,弹出窗口似乎会在代码执行后立即关闭。因为如果我使用XTerminal编译,我可以看到一个小窗口弹出,但随后关闭。

我设法通过在底部添加一个无限循环来保持窗口打开:

while true do () done;;

但仍然不明白事情是如何运作的。请帮忙。谢谢

当脚本终止时,所有资源都被释放:内存、文件描述符,包括X窗口。

如果添加一个无限循环,脚本不会终止,并且窗口保持打开状态。

同样,在顶层下,只要你不关闭顶层,窗户就会一直打开。

我建议在你的脚本末尾加上两行:

  • 打印"按回车键退出"
  • 从键盘输入中读取一行

这样,直到用户按下回车键,脚本才会终止。

事实上,正如jrouquie所解释的,您需要延迟程序的终止。我个人这样做的方式是等待用户输入。在交互式程序(或正在研究的打开图形模式的功能)的末尾,我输入:

ignore (Graphics.read_key ())

这将等待键盘上的某个键被按下,并在返回之前忽略该键值。

相关内容

  • 没有找到相关文章

最新更新