2013-04-21 10 views
37

Udało mi się zainstalować cabal text-icu bez błędów. (Użyłem --extra-lib-dirs i --extra-include-dirs aby wskazywały lib i include katalogów w binarnej dystrybucji icu4c.)Jak uzyskać text-icu działające w systemie Windows?

byłem też w stanie zbudować następujący prosty program, który używa text-icu, wykonując ghc --make icu.hs:

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

Brak błędów ani ostrzeżeń w jednym z tych kroków. Ale kiedy próbuję uruchomić skompilowany program, icu.exe, nie otrzymuję żadnego wyjścia. Oczekiwałem, że dostanę linię z Locale "tr-TR", ale zamiast tego otrzymam nic - nawet błąd lub ostrzeżenie. Pozostaje to w przypadku, gdy próbuję

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

więc używając text-icu rzeczy wydaje się spowodować, że program nie cicho. echo $? plony False.

Czy ktoś ma text-icu uruchomiony w systemie Windows? Czy możesz mi powiedzieć, co robię źle?

+0

Możecie spróbować 'print "Start"' jako pierwszy expr w 'main', aby sprawdzić, czy nie działa przy ładowaniu, czy w wywołaniu 'locale" tr-TR "'. Nie mogę nawet skompilować twojego programu: pakiet instaluje się dobrze, ale przy kompilacji ma nierozwiązane referencje. -optl-L i -optl-l nie pomagają. –

+0

Kiedy dodaję "print" start "" na początku, otrzymuję to samo zachowanie - brak wyjścia w ogóle. –

+0

Pierwsza to: libHStext-icu-0.6.3.5.a (text_icu.o): text_icu.c :(. Text + 0x139): niezdefiniowane odniesienie do 'ucnv_getMaxCharSize_51 ' –

Odpowiedz

1

ten sposób okna reaguje na brakującym statycznej uzależnienia. Gdy system operacyjny uruchamia proces, wyszukuje zależności statyczne. Jeśli czegoś brakuje, program nie jest uruchamiany.

Użyj pliku depends.exe, aby dowiedzieć się, jakiego importowania brakuje. To może być brakująca biblioteka dll lub ta, która jest złą wersją.

Zależy jest dostępny z 1. Visual Studio 2. Microsoft Platform SDK 3. Inne pakiety Microsoft 4. http://www.dependencywalker.com

To całkiem niezbędny podczas tropienia, co dzieje się w tym przypadku.

3

I udało się go robi:

  • pobrać pliki binarne z http://site.icu-project.org/download/56#TOC-ICU4C-Download konkretnie http://download.icu-project.org/files/icu4c/56.1/icu4c-56_1-Win32-msvc10.zip.
  • Wyodrębnij zawartość icu/bin do katalogu C:\bin, która znajduje się na moim %PATH%. Wyodrębnij zawartość icu do katalogu C:\bin\icu.
  • Użyj Stack, aby uruchomić stack ghci text-icu --extra-lib-dirs=c:\bin --extra-include-dirs=c:\bin\icu\include.
  • W GHCi uruchom import Data.Text.ICU.Normalize, następnie :set -XOverloadedStrings, a następnie normalize None "test".
  • Dla każdego pliku dll, który jest zgłaszany jako nie można znaleźć, np. icuuc.dll, weź C:\bin\icuuc56.dll i wykonaj kopię na C:\bin\icuuc.dll. Dla mnie były trzy odpowiednie biblioteki dll.

Po tym wszystkim mogę normalizować ciąg znaków w ghci.

7

Stack zawiera kopię msys2 w systemie Windows, który zawiera menedżera pacman pakietów, dzięki czemu możemy uruchomić:

stack exec -- pacman -Sy mingw64/mingw-w64-x86_64-icu 
stack build text-icu 
Powiązane problemy