2012-01-23 3 views
5

Sono un appassionato di Haskell e sono rimasto bloccato nel compilare il mio piccolo programma Haskell su Windows. Il mio programma utilizza il pacchetto iconv, che a sua volta utilizza la libreria esterna scritta in c/C++. Per far funzionare le cose che ho:Collegamento C++ dll con Haskell-Platform su Windows, output 'riferimento non definito'

  • Run GNU-Iconv impostazione e ha aggiunto la sua cartella 'bin', dove si trovano 'libiconv2.dll' e 'libiconv2.dll', alla variabile PATH .
  • Estratto e copiato "File sviluppatore LibIconv" nella cartella "mingw" di Posizione piattaforma Haskell.
  • Quindi "cabal install iconv" viene compilato e ho installato il pacchetto cabal .

Ora, quando cerco di costruire il mio modulo Leksah, ottengo il messaggio da 'GHC' seguente:

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 

Con 'GHCi', mi trovo di fronte un problema troppo:

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' 

Penso che la soluzione probabile sia avere la corretta configurazione dei file di intestazione c/C++ nella cartella 'mingw' e impostare le variabili PATH in file 'lib', ma ho poca conoscenza a riguardo, quindi qualsiasi aiuto sarà molto apprezzato .

+0

Questo è un vecchio problema con la libiconv. Forse questa discussione sarebbe d'aiuto: http://www.mail-archive.com/[email protected]/msg00858.html –

+0

AGGIORNAMENTO. Grazie per la tua risposta. Immergiti più a fondo e trova le risposte: http://www.haskell.org/pipermail/haskell-cafe/2011-February/089234.html e qui http://www.progtown.com/topic190618-haskell-iconv -on-win32-iconvopen.html – Rijk

+0

@Ivory: se hai trovato la risposta, devi pubblicarla e accettarla. – sclv

risposta

1

L'installazione di libiconv è un po 'complicata su Windows.

  1. Scarica libiconv binario e file per sviluppatori da it site here
  2. Unzip entrambi i pacchetti oltre cartella MinGW, che si trova all'interno della cartella Haskell Platform.
  3. Scarica pacchetto cabala per il file Iconv latest version for the moment
  4. Modifica iconv.cabal, in modo da linee con include-dirs e extra-lib-dirs volontà assomiglia

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

preavviso i doppi trattini nel percorso finestre, e modificarlo per il tuo percorso di Haskell Platform.

  1. Modificare il file iconv.cabal, v'è una linea con if os(darwin) || os(freebsd), modificarlo a if os(darwin) || os(freebsd) || os(windows)
  2. Ecco fatto, ora è possibile eseguire cabal install comando iconv pachage dir