Haskell, GHC, win32, Каир - PullRequest
       12

Haskell, GHC, win32, Каир

10 голосов
/ 01 февраля 2011

У меня проблема с ghci + cairo на windows.Когда я пытаюсь загрузить, например, такой «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».«Что идет с пакетом Каира.Однако, скомпилированный с помощью 'ghc --make', все работает как ожидалось , так что это не проблема «отсутствующих dll» - все на месте.

Я использовал filemon, чтобы посмотреть что »ghci "загружается и в журнале я вижу, что 'libcairo-2.dll' (и в этой библиотеке определен символ '_cairo_surface_destroy') найден и загружен успешно, так что я не совсем понимаю - чего еще он хочет?

Ответы [ 2 ]

2 голосов
/ 28 сентября 2012

Я подозреваю, что вы столкнулись со многими проблемами, которые я только что сделал.

Я недавно пытался что-то сделать с Haskell и ZeroMQ на Windows. GHC работает на Windows, ZeroMQ имеет порт MingW32, и есть стандартный пакет ZeroMQ Cabal, поэтому я подумал, что это будет работать.

Тем не менее:

  • GHC имеет только частичную поддержку динамического связывания в Windows. Смотрите здесь .
  • Пакет ZeroMQ Cabal зависит от статической версии libzmq.
  • GHC в Windows использует соглашения MingW32 для своих библиотек и библиотек DLL.
  • ZeroMQ создает только динамический .dll в своем порту MingW32, а не .a статический архив.

Я не смог соединить все части вместе, поэтому на моем окне Windows не было кодирования ZeroMQ на Haskell.

0 голосов
/ 04 февраля 2011

Пожалуйста, запустите проверку ghc-pkg, чтобы убедиться, что он соответствует

...