2012-01-23 18 views
5

Haskell meraklısıyım ve Windows'daki küçük Haskell programımı derledikten sonra sıkışıp kaldım. Programım, c/C++ ile yazılmış yabancı kütüphaneyi kullanan iconv paketini kullanıyor.C++ dll, Windows'ta Haskell-Platform ile bağlantı kurarken, 'tanımsız referans' çıktıları

  • çalıştır GNU-Iconv kurulum ve PATH değişkene 'libiconv2.dll' ve 'libiconv2.dll' bulunan kendi 'bin' klasörü, ekledi: yapmak için işler ben çalışıyorum.
  • 'LibIconv geliştirici dosyaları', Haskell Platform'un 'mingw' klasörüne çıkartılmış ve kopyalanmıştır.
  • Sonra 'cabal install iconv' derler ve takılı kabalık paketim var. Ben Leksah benim modül oluşturmaya çalıştığınızda, ben 'ghc' dan mesajla aşağıdaki almak Şimdi

,: 'GHCi' ile

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 

, ben de bir sorunu yüz:

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' 

Ben muhtemel çözüm 'mingw' klasörüne c/C++ başlık dosyaları sağ kurulum sahip ve 'lib' dosyalarına PATH değişkenlerini ayarlama olduğunu düşünüyorum, ama bu konuda çok az bilgiye sahip, bu nedenle herhangi bir yardım çok takdir edilecektir .

+0

Bu eski bir sorundur libiconv. Belki bu iş parçacığı yardımcı olabilir: http://www.mail-archive.com/[email protected]/msg00858.html –

+0

UPDATE. Cevabın için teşekkürler. Daha derine dalmak ve cevapları bulmak için: http://www.haskell.org/pipermail/haskell-cafe/2011-Fullruary/089234.html ve buradan http://www.progtown.com/topic190618-haskell-iconv -on-win32-iconvopen.html – Rijk

+0

@Ivory - cevabı bulduysanız, gönderip kabul etmelisiniz. – sclv

cevap

1

libiconv'un yüklenmesi biraz zor.

  1. İndir sizin Haskell Platformu klasörünün içinde olan mingw klasöründe, üzerinde her iki paket Sıkıştırılmış it site here
  2. den ikili ve geliştirici dosyaları libiconv. Iconv latest version for the moment
  3. Düzenleme iconv.cabal dosyası için

  4. İndir cabal paketi include-dirs ve extra-lib-dirs irade ile çizgilerin böylece pencere yolunda

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

haber gibi çift çizgi görünüyor ve düzenleyerek bu Haskell Platformu'ndaki yolun.

  1. Düzenleme iconv.cabal dosya, bu, şimdi iconv pachage dir den cabal install komutunu çalıştırabilirsiniz if os(darwin) || os(freebsd) || os(windows)
  2. Thats olarak değiştirin, if os(darwin) || os(freebsd) olan bir çizgi vardır