2013-09-17 2 views
6

У меня есть проект в зависимости от iconv, потому что мне нужно работать с кодовой страницей cp1251. Here is минимальная реализация проблемного проекта. Я установил Iconv от here и успешно установлен Haskell пакет «Iconv» как этотСоздание программы Haskell в зависимости от iconv под окнами

cabal install iconv --extra-include-dirs="C:\GnuWin32\include" --extra-lib-dirs="C:\GnuWin32\lib" 

правильно установлен пакет Iconv, но проект в зависимости от этого не удалось на связь, вот что происходит.

c:\iconvsmpl>cabal configure --extra-include-dirs="C:\GnuWin32\include" --extra- 
lib-dirs="C:\GnuWin32\lib" 
Warning: The package list for 'hackage.haskell.org' is 16 days old. 
Run 'cabal update' to get the latest list of available packages. 
Resolving dependencies... 
Configuring iconvsmpl-0.1.0.0... 
Warning: The 'license-file' field refers to the file 'LICENSE' which does not 
exist. 

c:\iconvsmpl>cabal build 
Building iconvsmpl-0.1.0.0... 
Preprocessing executable 'iconvsmpl' for iconvsmpl-0.1.0.0... 
[1 of 1] Compiling Main    (iconvsmpl.hs, dist\build\iconvsmpl\iconvsm 
pl-tmp\Main.o) 
Linking dist\build\iconvsmpl\iconvsmpl.exe ... 
C:\Users\admin\AppData\Roaming\cabal\iconv-0.4.1.1\ghc-7.6.3/libHSiconv-0.4.1.1. 
a(hsiconv.o):hsiconv.c:(.text+0x7): undefined reference to `_imp__libiconv_open' 

C:\Users\admin\AppData\Roaming\cabal\iconv-0.4.1.1\ghc-7.6.3/libHSiconv-0.4.1.1. 
a(hsiconv.o):hsiconv.c:(.text+0x17): undefined reference to `_imp__libiconv' 
C:\Users\admin\AppData\Roaming\cabal\iconv-0.4.1.1\ghc-7.6.3/libHSiconv-0.4.1.1. 
a(hsiconv.o):hsiconv.c:(.text+0x27): undefined reference to `_imp__libiconv_clos 
e' 
collect2: ld returned 1 exit status 

c:\iconvsmpl> 

Почему iconv установлен и связан, но iconvsmpl не может быть связан. Как его создать под Windows? Есть ли другой способ работать с иностранными кодировками под Windows для Haskell?

Очень желательно иметь исполняемый файл для окон. Создание пакета и работа в Linux.

Версия Haskell-платформы является 2013.2.0.0

+0

Я просто угадать, но вы пробовали использовать http://prdownloads.sourceforge.net/mingw/libiconv-1.10-mingwPORT.tar.bz2? скачать? Это libiconv build с msys и mingw. Сборники gnuwin32 имеют тенденцию не вести себя без работы с mingw, поставляемым с платформой haskell (см. http://stackoverflow.com/questions/8972662/linking-c-dll-with-haskell-platform-on-windows-outputs-undefined -Справка). http://www.mail-archive.com/[email protected]/msg00863.html – Jonke

ответ

2

Вам нужно изменить файл .cabal в iconv пакета 'при установке на Windows. Удалите условную проверку, чтобы всегда применялось поле extra-libraries. Дополнение в include-dirs и extra-lib-dirs поля следующим образом:

include-dirs: cbits, "c:\\GnuWin32\\include" 
extra-lib-dirs: "c:\\GnuWin32\\lib" 
+0

Этому помогли, предположительно, из-за '\\' – s9gf4ult

Смежные вопросы