2012-01-23 29 views
5

Tôi là người đam mê Haskell và đã bị kẹt khi biên dịch chương trình Haskell nhỏ của tôi trên Windows. Chương trình của tôi sử dụng gói iconv, lần lượt sử dụng thư viện nước ngoài được viết bằng c/C++. Để làm cho mọi việc tôi có:Liên kết C++ dll với Haskell-Platform trên Windows, xuất ra 'tham chiếu không xác định'

  • Run GNU-Iconv thiết lập và thêm vào thư mục của nó 'bin', nơi 'libiconv2.dll' và 'libiconv2.dll' đang nằm, để biến PATH .
  • Trích xuất và sao chép 'LibIconv các tệp nhà phát triển' vào thư mục 'mingw' của vị trí Nền tảng Haskell.
  • Sau đó, biên dịch 'cài đặt cabal iconv' và tôi đã cài đặt gói cabal .

Bây giờ, khi tôi cố gắng xây dựng mô-đun của tôi trong Leksah, tôi nhận được tin nhắn từ 'GHC' sau:

Building norms-parser-0.0.1... 
Linking dist\build\norms-parser\norms-parser.exe ... 
C:\Documents and Settings\kdv\Application Data\cabal\iconv-0.4.1.0\ghc-7.0.4/libHSiconv-0.4.1.0.a(hsiconv.o):hsiconv.c:(.text+0x7): undefined reference to `_imp__libiconv_open' 
C:\Documents and Settings\kdv\Application Data\cabal\iconv-0.4.1.0\ghc-7.0.4/libHSiconv-0.4.1.0.a(hsiconv.o):hsiconv.c:(.text+0x17): undefined reference to `_imp__libiconv' 
C:\Documents and Settings\kdv\Application Data\cabal\iconv-0.4.1.0\ghc-7.0.4/libHSiconv-0.4.1.0.a(hsiconv.o):hsiconv.c:(.text+0x27): undefined reference to `_imp__libiconv_close' 
collect2: ld returned 1 exit status 

Với 'GHCi', tôi phải đối mặt với một vấn đề quá:

ghc.exe: unable to load package `iconv-0.4.1.0' 
ghc.exe: C:\Documents and Settings\kdv\Application Data\cabal\iconv-0.4.1.0\ghc- 7.0.4\HSiconv-0.4.1.0.o: unknown symbol `__imp__libiconv_open' 

Tôi nghĩ rằng giải pháp có thể có trong việc thiết lập đúng các tệp tiêu đề c/C++ thành thư mục 'mingw' và đặt biến PATH thành tệp 'lib', nhưng tôi có ít kiến ​​thức về nó, vì vậy mọi trợ giúp sẽ được đánh giá cao .

+0

Đây là một vấn đề cũ với libiconv. Có thể chuỗi này sẽ trợ giúp: http://www.mail-archive.com/[email protected]/msg00858.html –

+0

CẬP NHẬT. Cảm ơn vì đã trả lời. Lặn sâu hơn và tìm câu trả lời: http://www.haskell.org/pipermail/haskell-cafe/2011-February/089234.html và tại đây http://www.progtown.com/topic190618-haskell-iconv -on-win32-iconvopen.html – Rijk

+0

@Ivory - nếu bạn đã tìm thấy câu trả lời, bạn nên đăng nó và chấp nhận nó. – sclv

Trả lời

1

Cài đặt libiconv hơi phức tạp trên Windows.

  1. Tải libiconv nhị phânfile phát triển từ it site here
  2. Giải nén tất cả các gói trên thư mục mingw, mà là bên trong thư mục Haskell vBulletin của bạn.
  3. Tải cabal gói cho iconv latest version for the moment
  4. Chỉnh sửa tập tin iconv.cabal, vì vậy dòng với include-dirsextra-lib-dirs sẽ trông giống như

    include-dirs: cbits, "C:\\HaskellPlatform\\2013.2.0.0\\mingw\\include" 
    extra-lib-dirs: "C:\\HaskellPlatform\\2013.2.0.0\\mingw\\lib" 
    

thông báo các dấu gạch ngang đôi trong các cửa sổ con đường, và chỉnh sửa nó để con đường của bạn trên nền tảng Haskell.

  1. Chỉnh sửa tập tin iconv.cabal, có một phù hợp với if os(darwin) || os(freebsd), thay đổi nó để if os(darwin) || os(freebsd) || os(windows)
  2. Thats nó, bây giờ bạn có thể chạy lệnh cabal install từ iconv pachage dir
Các vấn đề liên quan