2011-09-12 7 views
3

Win XPでScala^Z3をCygwinとJDK 1.7.0を使ってコンパイルしようとしましたが、期待通りに動作しませんでした。WindowsでScala^Z3をコンパイルする

私は次のようでした: - 利用SBT 0.7.4 - githubの から使用現在のScala^Z3の改正 - 利用CygwinとそのGCC - 利用JDK 1.7.0(javacの)

「SBT更新"成功しました。

\ psuter-ScalaZ3-35cb691 SRC \ C/z3_Z3Wrapper.c \::10: "SBTパッケージには" 次のように未定義の参照を述べ、いくつかのエラーで終わる_Z3_mk_config」

`への未定義の参照をそれは私が変更されたすべてで動作するためには

.... \ PSuterScalaZ3の\ psuter-ScalaZ3-35cb691 \プロジェクト\ビルド\のscalaz3.scalaライン74:

lazy val gcc:ManagedTask = if(isUnix ||それはあまりにも、Windowsのために働くべきであると記載されているホームページにis32bit){

。それはまったくですか? プリコンパイル済みのjarファイルはありますか?

私はここでz3.jarを見ました:http://lara.epfl.ch/~psuter/jniz3/z3.jar これもLinux版ですね。 )確かに現在のsbtスクリプト、それについて

答えて

3

申し訳ありませんが、それはどちらか私のために動作しませんでしたので...

スカラ^ Z3は、コードの本当に良い作品は、(私が得ることができれば、それが動作するように)でありますLinuxでしか動作しません(絶対パスで知ることができるように、私たちはまだ外部ユーザーを持つことに慣れていません)。ここで

は、私はWindowsの下でそれをコンパイルするために使用する手順は次のとおりです。

  • のjavacですべてのJavaソースをコンパイル(依存関係が存在しない)
  • をjavahが使用するヘッダファイルはすべてのScalaのコンパイル生成します(Java .classファイルのみを依存関係として使用)
  • Visual Studioで.c + .hファイルをコンパイルします。
  • すべてを含むjarファイルを手動で作成します。

Scala^Z3をZ3 3.1の新しい変更に適合させると、LinuxとWindows用の共有ライブラリを持つプリコンパイル済み.jarファイルをリリースしたいと考えています。

EDIT GitHubリポジトリには、Scala 2.9.1およびZ3 3.2用にプリコンパイルされた.jarファイルが含まれるようになりました。それはWindowsとLinux(32bit)で動作します。リポジトリには、Visual Studioの代わりにMinGWを使用してWindowsで共有ライブラリをコンパイルする方法についての詳細な説明も含まれています(したがって、VSランタイムライブラリが不要です)。

+0

プリコンパイルされた.jar(Z3 3.1)素晴らしいだろう...動作しますか?これは、.parseSmtlib2String()メソッドが必要なためです。 –

+0

プリコンパイルされた.jar(バージョン1.1とz3.dll 2.19)を使用しましたが、警告:割り当てられた仮想メモリがありません。サイズ1561721928のオブジェクトを割り当てることができません。現在の割り当てサイズ:142676。 Scala^Z3 Homepageのpptスライドからのちょっとした言葉です。何が間違っていますか?それは本当に多くのRAMが必要ですか?間違ったDLL? –

+0

うまくいけば、来週末までに。メモリの問題は、最新のZ3にはメモリを管理する2つの方法があるという事実から来る可能性があります。手動または自動で私は古いZ3に対してコンパイルされた共有ライブラリをどのように使ってそのアスペクトとやりとりするのかよく分かりません。 – Philippe

3

私は2,3ヶ月前に同様の問題を抱えていました。ここではVisual Studio 2010でコンパイルするために何をしなければならなかったのですか?Scala^Z3とZ3自体が大きく変わったそれでも役に立つと思っています。

  1. は 作成DLLを新しいVisual C++ Win32プロジェクト(.NET Frameworkの4)を作成しました。

  2. すべての.hファイルと.cファイルをsrc/c /ディレクトリに追加しました。 VC何らかの形で は「インライン」修飾語句について苦情を申し立て、仕事仲間は にそれらを削除するように提案しました。

  3. Z3 2.19からz3.hを追加しました.Z3 2.16は受け入れられませんでした。また、 対応のz3.lib(x86、まだx64を試していない)が追加されました。 VCは z3.dllを受け付けず、破損しているファイルについて苦情を申し立てます。何故なら、Z3 自体は私のためにうまくいきます。

  4. プロジェクトは13の警告でコンパイルされ、 は明らかにscalaz3.dllという名前でなければならないdllが作成されます。

  5. SBTのコンパイルは、scalaz3.dllを追加すると、ビンはlib scalaz3.jarとZ3と

  6. 'Scalaの-classpath scalaz3.jar test.scala' scalaz3.jarするために一緒に全部 をジャーに。あなたは、これが利用可能であると思うんときに、現在のフォルダ内のdll は

+0

これらの詳細な手順をお寄せいただきありがとうございます。 .dllは実際にscalaz3.dllと呼ばれる必要があります。 Scala^Z3を実行すると、システムは正確な名前のライブラリをロードしようとします。それが失敗すると、.jarファイル内のその名前のファイルを探し、それを一時ディレクトリにコピーしてそこからロードします。 (一時的なディレクトリ名には、競合を避けるためにScala^Z3の現在のバージョンのハッシュが含まれています)。* nixシステムではlibscalaz3.soでなければならず、MacOSXではlibscalaz3.jnilib、 。 – Philippe

+0

私は最終的にMinGWを使って共有ライブラリをコンパイルする方法を見つけました。だから、z3.dllの外には依存関係がなくなりました。 – Philippe

関連する問題