エラーが発生しましたデータ構造をマーシャリングしました(エラー抽象タイプ(カスタム))。 1つの既知の抽象タイプ、すなわちBig_intが使用されています。しかし、そのマーシャルは大丈夫です。アプリケーションにカスタムCコードはありません。 Numのほかに、Unixライブラリも使用されています(ただし、そのタイプのアクティブなオブジェクトはないと思います)。私たちは閉鎖でマーシャルをしています。どのOCaml標準ライブラリタイプをマーシャリングできないのですか?
OCSスキーム(Schemeインタプリタ、純粋なOcaml)とDypgen(拡張可能なGLRパーサ、純粋なOcaml)の2つのサードパーティライブラリが使用されています。問題は、動的に拡張されたパーサーを保存するDypgenの新機能です。
Ocamlエラーメッセージは無用です(カスタムタグを持つどの抽象タイプが原因であるかはわかりません)。
LexbufはOcamlチャネル上のクロージャを含んでおり、マーシャルされていない可能性があるため、Lexbufが原因と思われましたが、これは問題ではないようです。だから私の質問は:
マーシャルにできない標準ライブラリコンポーネントはどれですか?
カスタム値は、custom_ops(マーシャリングタグとして使用)の名前へのポインタを持つことができます。 – ygrek
Hm。弱い配列をマーシャリングしようとするとどうなりますか?私は間違いなく診断で(カスタム)取得しています。 – Yttrill
@Yttrill "Marshal.to_string(Weak.create 3)[] ;;"結果: "例外:Invalid_argument" output_value:抽象値(要約) " –