在Windows上编译Scala ^ Z3

时间:2011-09-12 13:16:47

标签: scala z3

我尝试使用Cygwin和JDK 1.7.0在Win XP上编译Scala ^ Z3,但它没有按预期工作。

我做了以下事情: - 使用SBT 0.7.4 - 使用来自github的当前Scala ^ Z3修订版 - 使用Cygwin及其gcc - 使用JDK 1.7.0(javac)

“sbt update”成功了。 “sbt package”最终会出现几个错误,指出未定义的引用,如下所示:

  
    

\ psuter-ScalaZ3-35cb691 \ src \ c / z3_Z3Wrapper.c:10:未定义引用`_Z3_mk_config'

  

为了让它完全有效我改变了.... \ PSuterScalaZ3 \ psuter-ScalaZ3-35cb691 \ project \ build \ scalaz3.scala第74行:

  
    

lazy val gcc:ManagedTask = if(isUnix || is32bit){

  

在主页上声明它也适用于Windows。它有吗? 有可用的预编译罐吗?

我在这里看到了一个z3.jar:http://lara.epfl.ch/~psuter/jniz3/z3.jar 我猜这也是一个Linux版本?因为它对我不起作用......

Scala ^ Z3是一段非常好的代码(如果我可以让它工作;))

2 个答案:

答案 0 :(得分:3)

很抱歉,sbt脚本确实目前仅适用于Linux(正如您可以通过绝对路径判断的那样,我们还不习惯拥有外部用户)。

以下是我在Windows下编译它的步骤:

  • 使用javac编译所有Java源代码(没有依赖项)
  • 使用javah生成头文件
  • 使用scalac编译所有Scala源代码(仅使用Java .class文件作为依赖项)
  • 使用Visual Studio
  • 编译.c + .h文件
  • 手动创建包含所有内容的jar文件

我们还希望在将Scala ^ Z3改编为Z3 3.1中的新更改后,使用Linux和Windows的共享库发布预编译的.jar文件。

编辑 GitHub存储库现在包含为Scala 2.9.1和Z3 3.2准备的预编译.jar文件。它适用于Windows和Linux(32位)。该存储库还包含有关如何使用MinGW而不是Visual Studio编译Windows中的共享库的更详细说明(因此无需VS运行时库)。

答案 1 :(得分:3)

几个月前我遇到了类似的问题,这是我用Visual Studio 2010编译它时必须做的事情。我不确定它是否仍然相关,因为Scala ^ Z3和Z3本身发生了很大变化,但我希望它仍然有用。

  1. 为其创建了一个新的Visual C ++ Win32项目(.NET Framework 4) 创建DLL。

  2. 在src / c /目录中添加了所有.h和.c文件。 VC莫名其妙 抱怨“内联”修饰符和建议的工作伙伴 删除它们,我做了。

  3. 从Z3 2.19添加z3.h,不接受Z3 2.16。还添加了 对应的z3.lib(x86,尚未尝试过x64)。 VC不会接受 z3.dll并抱怨该文件已损坏。不知道为什么,Z3 本身对我来说很好。

  4. 该项目编译了13个警告,并创建了一个dll 显然必须命名为scalaz3.dll。

  5. sbt编译,将scalaz3.dll添加到lib-bin,jar整个事情 一起到scalaz3.jar

  6. 'scala -classpath scalaz3.jar test.scala'与scalaz3.jar和z3.dll 在当前文件夹中工作