Компиляция Scala ^ Z3 в Windows - PullRequest
       4

Компиляция Scala ^ Z3 в Windows

3 голосов
/ 12 сентября 2011

Я пытался скомпилировать Scala ^ Z3 на Win XP, используя Cygwin и JDK 1.7.0, но это не сработало, как ожидалось.

Я сделал следующее: - Используйте SBT 0.7.4 - Использовать текущую версию Scala ^ Z3 из github - Используйте Cygwin и его GCC - Используйте JDK 1.7.0 (javac)

"обновление sbt" прошло успешно. «пакет sbt» приводит к нескольким ошибкам с указанием неопределенных ссылок, таких как:

\ 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 ]

3 голосов
/ 15 сентября 2011

У меня была похожая проблема несколько месяцев назад, и вот что я должен был сделать, чтобы скомпилировать ее с Visual Studio 2010. Я не уверен, что она по-прежнему актуальна, поскольку Scala ^ Z3 и Z3 сильно изменились, но я надеюсь, что это все же полезно.

  1. Создан новый проект Visual C ++ Win32 (.NET Framework 4) для создание DLL.

  2. Добавлены все файлы .h и .c в каталог src / c /. ВК как-то пожаловался на модификатор "inline" и помощник по работе предложил удали их, что я и сделал.

  3. Добавлен z3.h из Z3 2.19, Z3 2.16 не был принят. Также добавил соответствующий z3.lib (x86, еще не пробовал x64). ВК не примет z3.dll и жалоба на повреждение файла. Понятия не имею, почему, Z3 у меня само по себе работает нормально.

  4. Проект компилируется с 13 предупреждениями и создается dll, который очевидно, ДОЛЖЕН быть назван scalaz3.dll.

  5. sbt compile, добавление scalaz3.dll в lib-bin, jar все это вместе к scalaz3.jar

  6. 'scala -classpath scalaz3.jar test.scala' с scalaz3.jar и z3.dll в текущей папке работает

3 голосов
/ 13 сентября 2011

К сожалению, сценарий sbt действительно в настоящее время работает только для Linux (и, как вы можете сказать по абсолютному пути, мы еще не совсем привыкли к внешним пользователям).

Вот шаги, которые я использую для компиляции под Windows:

  • скомпилировать все исходники Java с помощью javac (нет зависимостей)
  • генерирует заголовочные файлы, используя javah
  • скомпилировать все исходники Scala с помощью scalac (используя в качестве зависимостей только файлы Java .class)
  • скомпилируйте файлы .c + .h с помощью Visual Studio
  • вручную создайте файл jar со всем

Мы также надеемся выпустить предварительно скомпилированный файл .jar с общей библиотекой для Linux и Windows, как только мы адаптировали Scala ^ Z3 к новым изменениям в Z3 3.1.

EDIT Хранилище GitHub теперь содержит предварительно скомпилированный файл .jar, подготовленный для Scala 2.9.1 и Z3 3.2. Работает под Windows и Linux (32 бита). Хранилище также содержит более подробные инструкции о том, как скомпилировать общую библиотеку в Windows, используя MinGW вместо Visual Studio (следовательно, устраняется необходимость в библиотеках времени выполнения VS).

...