2013-04-21 21 views
37

Tôi đã có thể cài đặt cab text-icu mà không có lỗi. (Tôi đã từng --extra-lib-dirs--extra-include-dirs để trỏ đến libinclude thư mục trong phân phối nhị phân của icu4c.)Làm cách nào để nhận được text-icu hoạt động trên Windows?

Tôi cũng đã có thể xây dựng các chương trình đơn giản sau đây có sử dụng text-icu, bằng cách làm ghc --make icu.hs:

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

Không có lỗi hoặc cảnh báo trong một trong các bước này. Nhưng khi tôi cố gắng chạy chương trình đã biên dịch, icu.exe, tôi hoàn toàn không nhận được kết quả nào. Tôi mong đợi để có được một dòng với Locale "tr-TR", nhưng thay vào đó tôi không nhận được gì - thậm chí không phải là một lỗi hoặc cảnh báo. Điều này vẫn xảy ra nếu tôi thử

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

vì vậy việc sử dụng công cụ text-icu dường như khiến chương trình không hoạt động âm thầm. echo $? sản lượng False.

Có ai có text-icu và chạy trên Windows không? Bạn có thể cho tôi biết tôi đang làm gì sai không?

+0

Bạn có thể thử một 'in "Start"' như expr đầu tiên trong 'main', để xem liệu nó có bị lỗi khi đang tải hay khi gọi đến 'Locale" tr-TR "'. Tôi thậm chí không thể có được chương trình của bạn để biên dịch: gói cài đặt tốt, nhưng trên biên dịch nó có tài liệu tham khảo chưa được giải quyết. -optl-L và -optl-l không giúp được gì. –

+0

Khi tôi thêm 'in 'bắt đầu' 'ngay từ đầu, tôi nhận được cùng một hành vi - không có đầu ra nào cả. –

+0

Đầu tiên là: libHStext-icu-0.6.3.5.a (text_icu.o): text_icu.c :(. Text + 0x139): tham chiếu không xác định đến 'ucnv_getMaxCharSize_51 ' –

Trả lời

1

Đây là cách các cửa sổ phản ứng với một sự phụ thuộc tĩnh mất tích. Khi hệ điều hành bắt đầu một quá trình, nó sẽ tìm các phụ thuộc tĩnh. Nếu một trong những mất tích, sau đó chương trình không được bắt đầu.

Sử dụng depends.exe để tìm hiểu xem nhập nào bị thiếu. Đó có thể là một dll thiếu hoặc một trong đó là phiên bản sai.

Phụ thuộc có sẵn với 1. Visual Studio 2. Microsoft Platform SDK 3. gói microsoft khác 4. http://www.dependencywalker.com

Nó khá không thể thiếu khi theo dõi những gì đang xảy ra trong trường hợp này.

3

tôi quản lý nó bằng cách làm:

  • Tải về các tập tin nhị phân từ http://site.icu-project.org/download/56#TOC-ICU4C-Download, cụ thể http://download.icu-project.org/files/icu4c/56.1/icu4c-56_1-Win32-msvc10.zip.
  • Trích xuất nội dung của icu/bin vào thư mục C:\bin nằm trên số %PATH% của tôi. Trích xuất nội dung của icu vào thư mục C:\bin\icu.
  • Sử dụng Stack để chạy stack ghci text-icu --extra-lib-dirs=c:\bin --extra-include-dirs=c:\bin\icu\include.
  • Trong GHCi, hãy chạy import Data.Text.ICU.Normalize, sau đó :set -XOverloadedStrings, sau đó normalize None "test".
  • Đối với mỗi dll được báo cáo là không thể tìm thấy, ví dụ: icuuc.dll, lấy số C:\bin\icuuc56.dll và tạo một bản sao tại C:\bin\icuuc.dll. Đối với tôi, có ba dll liên quan.

Sau tất cả, tôi có thể chuẩn hóa chuỗi trong ghci.

7

Stack bao gồm một bản sao của msys2 trên Windows, trong đó có người quản lý pacman gói, vì vậy chúng tôi có thể chạy:

stack exec -- pacman -Sy mingw64/mingw-w64-x86_64-icu 
stack build text-icu 
Các vấn đề liên quan