Haskell, GHC, Win32, le Caire

J’ai un problème avec ghci + cairo sur windows. Lorsque j’essaie de charger, par exemple, comme ce “ghci -package cairo”, il échoue avec l’erreur suivante:

 Chargement du paquet random-1.0.0.2 ... liant ... done.
 Chargement du paquet haskell98 ... liant ... done.
 Chargement du paquetage syb-0.1.0.2 ... liant ... fait.
 Chargement du package base-3.0.3.2 ... liaison ... terminé.
 Chargement du package mtl-1.1.0.2 ... liaison ... terminé.
 : C: \ Utilisateurs \ alexeys \ AppData \ Roaming \ cabal \ cairo-0.12.0 \ ghc-6.12.3 \ HScairo-0.12.0.o: symbole inconnu `_cairo_surface_destroy '
 Chargement du package cairo-0.12.0 ... liaison ...: impossible de charger le package `cairo-0.12.0 '

Même les programmes les plus simples ne fonctionnent pas en mode interactif, comme par exemple «Text.hs» fourni avec le package cairo. Bien que compilé avec ‘ghc –make’ tout fonctionne comme prévu , donc ce n’est pas un problème de “dll manquant” – tout est en place.

J’ai utilisé ‘filemon’ pour voir ce que “ghci” charge et dans le journal je peux voir “libcairo-2.dll” (et cette bibliothèque a le symbole “_cairo_surface_destroy” défini) trouvé et chargé avec succès, donc je ne comprends pas vraiment – que veut-il de plus?

    Je soupçonne que vous rencontrez beaucoup de problèmes que je viens de faire.

    J’ai essayé de faire quelque chose récemment avec Haskell et ZeroMQ sur Windows. GHC fonctionne sous Windows, et ZeroMQ possède un port MingW32, et il existe un package ZeroMQ Cabal standard, alors j’ai pensé que cela fonctionnerait.

    Toutefois:

    • GHC ne prend en charge que partiellement la liaison dynamic sous Windows. Voir ici
    • Le package ZeroMQ Cabal dépend de la version statique de libzmq .
    • GHC sous Windows utilise les conventions MingW32 pour ses bibliothèques et ses DLL.
    • ZeroMQ ne construit qu’un fichier .dll dynamic dans leur port MingW32, et non une .a statique .a .

    Je ne pouvais pas assembler toutes les pièces, donc pas de codage ZeroMQ basé sur Haskell sur ma boîte Windows.

    S’il vous plaît lancez la vérification de ghc-pkg pour voir si elle est cohérente