1

Windows7でz3ocamlバインディングが機能していません。これが私が従ったプロセスです。

  1. インストールされたObjectiveCamlバージョン3.11.0(Microsoftツールチェーン)
  2. インストールされたcamlidl-1.05(Microsoft Visual Studio 2008 + cygwinを使用して構築)
  3. インストールされたz3-3.0
  4. 「build.cmd」を実行してz3ocamlバインディングをビルドしました。ビルドは成功しました。
  5. 「build.cmd」によって生成されたファイルをz3/ocamlからObjectiveCaml/libにコピーしました
  6. ocamlインタラクティブを起動し、「z3.cma」をロードしました

    # #load "z3.cma";;
    Characters -1--1:
      #load "z3.cma";;
    
    Error: The external function `get_theory_callbacks' is not available
    
    # Z3.mk_context;;
    Characters -1--1:
      Z3.mk_context;;
    
    Error: The external function `camlidl_z3_Z3_mk_context' is not available
    

誰かが私にいくつかのヒントを教えてもらえますか?

編集1: 「Z3-3.0 \ examples\ocaml」で例を作成します。

build.cmdからの抜粋

set XCFLAGS=/nologo /MT /DWIN32
ocamlopt -ccopt "%XCFLAGS%" -o test_mlapi.exe -I ..\..\ocaml ole32.lib %OCAMLLIB%\libcamlidl.lib z3.cmxa test_mlapi.ml

VisualStudio2008コマンドプロンプトbuild.cmdを実行すると次のエラーが発生しました

** Fatal error: Cannot find file "/nologo"
File "caml_startup", line 1, characters 0-1:
Error: Error during linking

を削除すると-ccopt "%XCFLAGS%"、正常に動作します。生成されたexeも期待どおりに実行されます。(PATHにflexdllがあることに注意してください)。なぜこれが起こっているのか考えていますか?

4

2 に答える 2

3

OCaml バージョン 3.11 以降では、「/nologo /MT /DWIN32」フラグを必要としない、または認識していない flexdll を介してリンカーを呼び出します。ocaml\build.cmd スクリプトは ocaml のバージョンをテストし、XCFLAGS を適切に設定します。同じことを行うには、examples\ocaml\build.cmd を変更する必要があると思います。

Z3 ocaml バインディング ディレクトリから 'ocamlmktop -o ocamlz3 z3.cma' を実行してカスタム トップレベルを作成すると、トップレベルから Z3 を使用できます。

于 2011-09-05T16:11:28.333 に答える
2
于 2011-09-27T22:14:21.720 に答える