2012-01-23 8 views
5

Soy un entusiasta de Haskell y me he atascado en la compilación de mi pequeño programa Haskell en Windows. Mi programa usa el paquete iconv, que a su vez usa la biblioteca extranjera escrita en c/C++. Para hacer funcionar las cosas que tengo:Vinculación C++ dll con Haskell-Platform en Windows, salidas 'referencia indefinida'

  • Run GNU-Iconv configuración y añadido a su carpeta 'bin', donde se encuentran 'libiconv2.dll' y 'libiconv2.dll', a la variable PATH .
  • Extraído y copiado 'LibIconv developer files' en la carpeta 'mingw' de Ubicación de la plataforma Haskell.
  • Luego compila "cabal install iconv" y tengo el paquete cabal instalado.

Ahora, cuando intento para construir mi módulo en Leksah, me sale el siguiente mensaje de '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 

Con 'GHCi', me enfrento a un problema demasiado:

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' 

Creo que la solución probable es tener la configuración correcta de los archivos de cabecera c/C++ en la carpeta 'mingw' y configurar las variables PATH en archivos 'lib', pero tengo poco conocimiento al respecto, por lo que cualquier ayuda será muy apreciada .

+0

Este es un viejo problema libiconv. Tal vez este hilo sería de ayuda: http://www.mail-archive.com/[email protected]/msg00858.html –

+0

ACTUALIZACIÓN. Gracias por su respuesta. Buceo más profundo y encontrar respuestas: http://www.haskell.org/pipermail/haskell-cafe/2011-February/089234.html y aquí http://www.progtown.com/topic190618-haskell-iconv -on-win32-iconvopen.html – Rijk

+0

@Ivory: si ha encontrado la respuesta, debe publicarla y aceptarla. – sclv

Respuesta

1

Instalar libiconv es un poco complicado en Windows.

  1. Descargar libiconv binaria y archivos de desarrolladores deit site here
  2. Descomprimir los dos paquetes más de carpeta MinGW, que está dentro de la carpeta Plataforma Haskell.
  3. Descargar paquete de Cabal para Iconv latest version for the moment
  4. Editar archivo iconv.cabal, por lo que las líneas con include-dirs y extra-lib-dirs voluntad se ve como

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

aviso de los guiones dobles en ruta ventanas, y editarlo a su camino de la plataforma Haskell.

  1. Editar archivo iconv.cabal, hay una línea con if os(darwin) || os(freebsd), cambie a if os(darwin) || os(freebsd) || os(windows)
  2. Eso es todo, ahora se puede ejecutar cabal install comando desde iconv pachage dir
Cuestiones relacionadas