2012-01-23 22 views
5

मैं हास्केल उत्साही हूं और विंडोज़ पर अपने छोटे हास्केल प्रोग्राम को संकलित करने पर अटक गया हूं। मेरा प्रोग्राम iconv पैकेज का उपयोग करता है, जो बदले में सी/सी ++ में लिखी गई विदेशी पुस्तकालय का उपयोग करता है। बातें करने के लिए काम करते हैं मेरे पास है:विंडोज़ पर हास्केल-प्लेटफॉर्म के साथ सी ++ डीएल को जोड़ना, आउटपुट 'अपरिभाषित संदर्भ'

  • भागो GNU-Iconv सेटअप और PATH चर करने के लिए अपने 'बिन' फ़ोल्डर, जहां 'libiconv2.dll' और 'libiconv2.dll' स्थित हैं, जोड़ा।
  • हास्केल प्लेटफ़ॉर्म स्थान के 'mingw' फ़ोल्डर में 'LibIconv डेवलपर फ़ाइलों' को निकाला और कॉपी किया गया।
  • फिर 'कैबल इंस्टॉल iconv' संकलित करता है और मेरे पास कैबल पैकेज स्थापित है।

अब, जब मैं Leksah में मेरी मॉड्यूल बनाने की कोशिश, मैं '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 
'GHCi' के साथ

, मैं भी एक मुद्दा का सामना:

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' 

मुझे लगता है कि संभावित समाधान 'mingw' फ़ोल्डर में c/C++ हेडर फ़ाइलों का सही सेटअप करने और 'lib' फ़ाइलों में पथ चर सेट करने में है, लेकिन मुझे इसके बारे में बहुत कम ज्ञान है, इसलिए किसी भी मदद की बहुत सराहना की जाएगी ।

+0

इस के साथ एक पुराने समस्या है libiconv। शायद यह धागा मदद की होगी: http://www.mail-archive.com/[email protected]/msg00858.html –

+0

अद्यतन। आपके जवाब के लिए धन्यवाद। गहराई से डाइविंग और उत्तर ढूंढें: http://www.haskell.org/pipermail/haskell-cafe/2011- फरवरी/089234.html और यहां http://www.progtown.com/topic190618-haskell-iconv -ऑन-win32-iconvopen.html – Rijk

+0

@Ivory - अगर आपको जवाब मिल गया है, तो आपको इसे पोस्ट करना चाहिए और इसे स्वीकार करना चाहिए। – sclv

उत्तर

1

libiconv स्थापित करना विंडोज पर थोड़ा मुश्किल है।

  1. डाउनलोड MinGW फ़ोल्डर, जो अपने हास्केल मंच फ़ोल्डर के अंदर है पर दोनों संकुल से it site here
  2. खोल दो libiconv द्विआधारी और डेवलपर फ़ाइलों। Iconv latest version for the moment
  3. संपादित iconv.cabal फ़ाइल के लिए

  4. डाउनलोड कबाल पैकेज, इसलिए include-dirs और extra-lib-dirs इच्छा के साथ लाइनों की तरह

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

नोटिस खिड़कियों रास्ते में डबल डैश लग रहा है, और करने के लिए इसे संपादित हास्केल प्लेटफॉर्म का आपका मार्ग।

  1. संपादित iconv.cabal फ़ाइल, वहाँ if os(darwin) || os(freebsd) साथ एक पंक्ति है, if os(darwin) || os(freebsd) || os(windows)
  2. Thats के लिए इसे बदल यह, अब आप iconv pachage dir से cabal install आदेश चला सकते हैं