मैं विंडोज में एक छोटा सा हास्केल गेम बना रहा हूं, जहां हर बार जब उपयोगकर्ता कुंजी दबाता है तो मैं जवाब देना चाहता हूं। getChar
behaves strangely विंडोज़ पर, में conio.h
में पहुंच प्राप्त करने के लिए मैं एफएफआई का उपयोग करता हूं, जैसा कि here वर्णित है। प्रासंगिक कोड है:कैबल एफएफआई निर्भरता
foreign import ccall unsafe "conio.h getch" c_getch :: IO CInt
यह ठीक काम करता है, जब मैं GHCi में इसे चलाने के लिए, या GHC साथ यह संकलन। मैं भी इसे से बाहर एक कबाल पैकेज बनाने की कोशिश करना चाहते हैं, तो this सवाल से विस्तार, मैं अपने कबाल फ़ाइल में निम्न शामिल हैं:
...
executable noughts
Includes: conio.h
Extra-libraries conio
...
लेकिन जब मैं cabal configure
चलाने के लिए, यह मुझसे कहता है:
cabal: Missing dependency on a foreign library:
* Missing C library: conio
यह समझ में आता है, क्योंकि ...\Haskell Platform\2012.4.0.0\mingw
के तहत conio.h
फ़ाइल include
निर्देशिका के तहत conio
फ़ाइल ऑब्जेक्ट कोड प्रदान करने के लिए कोई है।
क्या मैं इसे सही तरीके से कर रहा हूं, और यदि हां, तो मैं कैसे पता लगा सकता हूं कि मेरी कैबेल फ़ाइल में कौन सी लाइब्रेरी शामिल है?
विभिन्न पुस्तकालयों कि conio कार्यों प्रदान करते हैं। क्या आपने 'अतिरिक्त-पुस्तकालय: क्रिस्टल' या 'अतिरिक्त-पुस्तकालय: msvcrt'' की कोशिश की है? वैसे, एमएसडीएन के अनुसार, आपको 'getch' के बजाय' _getch' का उपयोग करना चाहिए, लेकिन हेडर फ़ाइल आपके लिए ऐसा कर सकती है। –
ध्यान दें कि यह केवल विंडोज़ में ghc/ghci को प्रभावित करता है, और समाधान कोड विशेष रूप से WinHugs में काम नहीं करता है, इसलिए आपको इसे विशेष रूप से Windows/ghc के साथ संकलित करने की आवश्यकता है। – AndrewC
@ टिनक्टरियस मैंने अभी 'अतिरिक्त-पुस्तकालय: msvcrt' और' अतिरिक्त-पुस्तकालय: crtdll' अकेले और संयोजन में कोशिश की है। इसने 'कैबल बिल्ड' के आउटपुट को नहीं बदला। मुझे अपने विजुअल स्टूडियो इंस्टॉलेशन के तहत 'msvcrt.lib' और 'crtdll.c' मिला, और उन्हें मेरे फ़ोल्डर में कॉपी किया, लेकिन इसमें कुछ भी नहीं बदला। – Boris