1

ocaml グラフィック モジュールを使用しようとしています。この線:

#Graphics.open_graph "";;

対話型モジュールでは問題なく動作します。つまり、X11 で白い背景の小さなウィンドウがポップアップします。ただし、スクリプトモードを使用しようとすると、次の行をファイルに入れてコンパイルします。

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

X11 のみが起動しますが、ウィンドウ ポップアップは表示されません。マックを使用しています。誰でも理由を知っていますか?ありがとう。


ファローアップ:

スクリプト モードでは、コード実行直後にポップアップ ウィンドウがクローズされるようです。XTerminal を使用してコンパイルすると、小さなウィンドウ ポップアップが表示されますが、その後閉じます。

下部に無限ループを追加することで、ウィンドウを開いたままにすることができました。

while true do () done;;

しかし、まだ物事が実際にどのように機能するかを理解していません。助けてください。ありがとう。

4

2 に答える 2

3

スクリプトが終了すると、すべてのリソース (メモリ、X ウィンドウを含むファイル記述子) が解放されます。

無限ループを追加すると、スクリプトは終了せず、ウィンドウは開いたままになります。

同様に、トップレベルの下では、トップレベルを閉じない限り、ウィンドウは開いたままになります。

スクリプトの最後に次の 2 行を追加することをお勧めします。

  • print "エンターを押して終了"
  • キーボード入力から 1 行を読み取る

この方法では、ユーザーが Enter キーを押すまでスクリプトは終了しません。

于 2012-07-08T07:06:13.190 に答える
1

実際、jrouquie が説明しているように、プログラムの終了を遅らせる必要があります。私が個人的に行っている方法は、ユーザーの入力を待つことです。対話型プログラム (またはグラフィック モードを開く機能) の最後に、次のように記述します。

ignore (Graphics.read_key ())

これは、キーボードでキーが押されるまで待機し、戻る前にキーの値を無視します。

于 2012-07-08T07:17:06.897 に答える