Haskell, GHC, win32, cairo
У меня проблема с ghci + cairo на окнах. Когда я пытаюсь загрузить, например, как этот "ghci -package cairo", он терпит неудачу со следующей ошибкой:
Loading package random-1.0.0.2 ... linking ... done.
Loading package haskell98 ... linking ... done.
Loading package syb-0.1.0.2 ... linking ... done.
Loading package base-3.0.3.2 ... linking ... done.
Loading package mtl-1.1.0.2 ... linking ... done.
: C:\Users\alexeys\AppData\Roaming\cabal\cairo-0.12.0\ghc-6.12.3\HScairo-0.12.0.o: unknown symbol `_cairo_surface_destroy'
Loading package cairo-0.12.0 ... linking ... : unable to load package `cairo-0.12.0'
Даже самые простые программы не работают в интерактивном режиме, например, например, "Text.hs", который поставляется с пакетом cairo. Однако скомпилированный с 'ghc -make' работает как ожидалось, поэтому его проблема с отсутствующей dll - все на месте.
Я использовал 'filemon', чтобы посмотреть, что загружает "ghci", и в журнале я вижу "libcairo-2.dll" (и эта библиотека имеет определенный символ "_cairo_surface_destroy" ), который был найден и загружен успешно, я действительно понимаю - чего еще он хочет?
Ответы
Ответ 1
Я подозреваю, что вы столкнулись со многими проблемами, которые я только что сделал.
Я попытался сделать что-то недавно с Haskell и ZeroMQ на окнах. GHC работает в Windows, а у ZeroMQ есть порт MingW32, и есть стандартный пакет ZeroMQ Cabal, поэтому я думал, что это сработает.
Однако:
- GHC поддерживает только частичную поддержку динамической компоновки в Windows. См. здесь.
- Пакет ZeroMQ Cabal зависит от статической версии
libzmq
.
- GHC в Windows использует соглашения MingW32 для своих библиотек и библиотек dll.
- ZeroMQ только создает динамический
.dll
в своем MingW32-порту, а не в статическом архиве .a
.
Я не мог собрать все части, поэтому на моем окне окна не было кодирования ZeroMQ на основе Haskell.
Ответ 2
Запустите ghc-pkg check, чтобы убедиться, что он согласован.