2013-04-21 16 views
37

Sono stato in grado di installare la text-icu senza errori. (Io ho usato --extra-lib-dirs e --extra-include-dirs per puntare ai lib e include directory nella distribuzione binaria di icu4c.)Come posso lavorare con il testo su Windows?

Sono stato anche in grado di costruire il seguente semplice programma che utilizza text-icu, facendo ghc --make icu.hs:

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

Nessun errore o avviso in uno di questi passaggi. Ma quando provo a eseguire il programma compilato, icu.exe, non ottengo alcun output. Mi aspettavo di ottenere una linea con Locale "tr-TR", ma invece ottengo nulla - nemmeno un errore o un avvertimento. Questo rimane il caso se provo

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

in modo da utilizzare la roba text-icu sembra causare il programma di fallire in silenzio. echo $? rese False.

Qualcuno ha text-icu installato e funzionante su Windows? Puoi dirmi cosa sto sbagliando?

+0

si potrebbe provare un 'stampa "Start"' come il primo espr in 'main', per vedere se sta fallendo il caricamento, o sulla chiamata a 'Locale" tr-TR "'. Non riesco nemmeno a compilare il programma: il pacchetto si installa bene, ma su compilazione ha riferimenti non risolti. -optl-L e -optl-l non aiutano. –

+0

Quando aggiungo 'print" start "' all'inizio, ottengo lo stesso comportamento - nessuna uscita. –

+0

Il primo è: libHStext-icu-0.6.3.5.a (text_icu.o): text_icu.c :(. Text + 0x139): riferimento non definito a 'ucnv_getMaxCharSize_51' –

risposta

1

Questo è il modo finestre reagisce ad una dipendenza statica mancante. Quando il sistema operativo avvia un processo, cerca dipendenze statiche. Se ne manca uno, il programma non viene avviato.

Utilizzare depends.exe per individuare l'importazione mancante. Quello potrebbe essere un dll mancante o uno che è la versione sbagliata.

Dipende è disponibile con 1. Visual Studio 2. Microsoft Platform SDK 3. Altri pacchetti microsoft 4. http://www.dependencywalker.com

E 'piuttosto indispensabile quando rintracciare ciò che sta accadendo in questo caso.

3

sono riuscito facendo:

  • Scarica i binari da http://site.icu-project.org/download/56#TOC-ICU4C-Download, specificamente http://download.icu-project.org/files/icu4c/56.1/icu4c-56_1-Win32-msvc10.zip.
  • Estrarre il contenuto di icu/bin nella directory C:\bin che si trova sul mio %PATH%. Estrarre il contenuto di icu nella directory C:\bin\icu.
  • Utilizzare Stack per eseguire stack ghci text-icu --extra-lib-dirs=c:\bin --extra-include-dirs=c:\bin\icu\include.
  • In GHCi, eseguire import Data.Text.ICU.Normalize, quindi :set -XOverloadedStrings, quindi normalize None "test".
  • Per ogni dll riportata come non può essere trovata, ad es. icuuc.dll, prendere lo C:\bin\icuuc56.dll e fare una copia allo C:\bin\icuuc.dll. Per me, c'erano tre dll rilevanti.

Dopo tutto ciò, posso normalizzare una stringa in ghci.

7

Stack include una copia di msys2 su Windows, che contiene il manager pacman pacchetto, in modo che possiamo eseguire:

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