2012-01-23 5 views
5

Jestem entuzjastą Haskella i utknąłem podczas kompilowania mojego małego programu Haskell na Windows. Mój program używa pakietu iconv, który z kolei korzysta z biblioteki zagranicznej napisanej w języku c/C++. Żeby było pracować mam:Łączenie C++ dll z Haskell-Platform na Windows, niezdefiniowane referencje wyjść '

  • Uruchom GNU-Iconv konfigurację i dodaje folderu „bin”, gdzie „libiconv2.dll” i „libiconv2.dll” znajdują się, aby zmienna PATH .
  • Wyodrębniono i skopiowano "pliki deweloperów LibIconv" do folderu "mingw" z lokalizacji platformy Haskell.
  • Następnie kompiluje się "cabal install iconv" i mam zainstalowany pakiet cabal .

Teraz, gdy próbuję zbudować mój moduł w Leksah, pojawia się następujący komunikat z 'GHC':

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 

z 'GHCi', I twarz problem zbyt:

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' 

Myślę, że prawdopodobnym rozwiązaniem jest odpowiednie ustawienie plików nagłówkowych c/C++ do folderu "mingw" i ustawienie zmiennych PATH do plików "lib", ale mam niewielką wiedzę na ten temat, więc każda pomoc będzie doceniana .

+0

Jest to stary problem libiconv. Może ten wątek będzie pomocny: http://www.mail-archive.com/[email protected]/msg00858.html –

+0

AKTUALIZACJA. Dzięki za odpowiedź. Nurkuj głębiej i znajduj odpowiedzi: http://www.haskell.org/pipermail/haskell-cafe/2011-February/089234.html i tutaj http://www.progtown.com/topic190618-haskell-iconv -on-win32-iconvopen.html – Rijk

+0

@Iwory - jeśli znalazłeś odpowiedź, powinieneś ją opublikować i zaakceptować. – sclv

Odpowiedz

1

Instalacja libiconv jest nieco skomplikowana w systemie Windows.

  1. Pobierz libiconv binarny i pliki deweloperskich z it site here
  2. Rozpakuj obu pakietów ponad folderze mingw, co jest wewnątrz folderu Haskell Platform.
  3. pobierania Cabal pakiet dla Iconv latest version for the moment
  4. Edycja pliku iconv.cabal, więc linie z include-dirs i extra-lib-dirs woli wygląda jak

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

powiadomienia podwójne kreski na ścieżce okien i edytować go do swoją ścieżkę platformy Haskell.

  1. Edit iconv.cabal plik znajduje się linia z if os(darwin) || os(freebsd), zmień go na if os(darwin) || os(freebsd) || os(windows)
  2. to wszystko, teraz można uruchomić komendę cabal install z iconv pachage reż
Powiązane problemy