40 votes

Comment faire pour que text-icu fonctionne sous Windows ?

J'ai pu installer cabalement text-icu sans erreur. (J'ai utilisé --extra-lib-dirs y --extra-include-dirs pour pointer vers le lib y include dans la distribution binaire de icu4c).

J'ai également pu construire le programme simple suivant qui utilise text-icu en faisant ghc --make icu.hs :

-- icu.hs
import Data.Text.ICU
main = print $ Locale "tr-TR"

Aucune erreur ou avertissement dans ces deux étapes. Mais quand j'essaie d'exécuter le programme compilé, icu.exe je n'obtiens aucune sortie. Je m'attendais à obtenir une ligne avec Locale "tr-TR" mais je n'obtiens rien, pas même une erreur ou un avertissement. Cela reste le cas si j'essaie

main = do
  print $ Locale "tr-TR"
  print "Done"

donc en utilisant le text-icu semble faire échouer le programme en silence. echo $? donne False .

Est-ce que quelqu'un a text-icu sous Windows ? Pouvez-vous me dire ce que je fais de mal ?

11voto

Michael Snoyman Points 14888

Pile inclut une copie de msys2 sous Windows, qui contient le fichier pacman le gestionnaire de paquets, donc nous pouvons l'exécuter :

stack exec -- pacman -Sy mingw64/mingw-w64-x86_64-icu
stack build text-icu

5voto

Neil Mitchell Points 2510

J'y suis arrivé par la pratique :

  • Téléchargez les binaires à partir de http://site.icu-project.org/download/56#TOC-ICU4C-Download et plus particulièrement http://download.icu-project.org/files/icu4c/56.1/icu4c-56_1-Win32-msvc10.zip .
  • Extraire le contenu de icu/bin dans le répertoire C:\bin qui est sur mon %PATH% . Extraire le contenu de icu dans le répertoire C:\bin\icu .
  • Utilisez Pile à exécuter stack ghci text-icu --extra-lib-dirs=c:\bin --extra-include-dirs=c:\bin\icu\include .
  • Dans GHCi, exécutez import Data.Text.ICU.Normalize entonces :set -XOverloadedStrings entonces normalize None "test" .
  • Pour chaque dll signalée comme étant introuvable, par exemple icuuc.dll , prenez le C:\bin\icuuc56.dll et faites-en une copie à C:\bin\icuuc.dll . Pour moi, il y avait trois dlls pertinentes.

Après tout cela, je peux normaliser une chaîne dans ghci .

1voto

Kenneth Parker Points 11

C'est ainsi que Windows réagit à une dépendance statique manquante. Lorsque le système d'exploitation démarre un processus, il recherche les dépendances statiques. S'il en manque une, le programme n'est pas lancé.

Utilisez depends.exe pour trouver l'importation qui manque. Il peut s'agir d'une dll manquante ou d'une version incorrecte.

D 1. Visual Studio 2. Le SDK de la plate-forme Microsoft 3. Autres paquets Microsoft 4. http://www.dependencywalker.com

C'est assez indispensable pour retracer ce qui se passe dans cette affaire.

0voto

sharkguto Points 61

Vous devriez vérifier s'il manque des DLL avec cygcheck. Vérifiez le chemin et les variables d'environnement de Windows. Ou essayez de réinstaller en suivant la procédure haskell.

http://www.haskell.org/haskellwiki/Windows#Tools_for_compilation

bonne chance

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X