कहें कि मेरे पास dictionary.txt
फ़ाइल है, मुझे इसे मानचित्र में पढ़ने और इसे अपने प्रोग्राम में उपयोग करने की आवश्यकता है, मैं संकलित exe फ़ाइल में इस शब्दकोश.txt फ़ाइल को कैसे बना सकता हूं?हास्केल में बाइनरी में संसाधन कैसे संकलित करें?
उत्तर
आप सीरियलाइज्ड डेटा प्रकारों को बाइटस्ट्रिंग अक्षर के रूप में स्टोर कर सकते हैं। यहाँ एक उदाहरण है:
- http://code.haskell.org/~dons/code/compiled-constants/
- http://haskell.org/haskellwiki/Compiling_in_constants
हालांकि, file-embed इस प्रक्रिया को स्वचालित, यह आसान गैर तुच्छ embeddings करने के लिए बना रही है।
सभी दृष्टिकोण अनिवार्य रूप से एक bytestring शाब्दिक रूप में स्थिर डेटा का प्रतिनिधित्व करने के लिए नीचे उबाल,
{-# LANGUAGE OverloadedStrings #-}
import Data.Binary
import qualified Data.Map as M
import qualified Data.ByteString.Char8 as S
import Data.ByteString.Lazy
import Codec.Compression.GZip
--
-- this is a gzip compressed literal bytestring, storing a binary-encoded Data.Map
--
mytable =
"\US\139\b\NUL\NUL\NUL\NUL\NUL\NUL\ETXEN\
\\219\SO\194 \f\197\224\188\196\CAN\227\US\
\\224\171~\NAKc\GS4ce\161`\178\191\215(\176\
\\190\180\167\231\210\n\241\171\203\191\ti\
\\157\217\149\249< \ENQ\214\&9>\202\162\179a\
\\132X\233\ESC=\231\215\164\SYN\157\DC2D\226*\
\\146\174o\t\167\DLE\209\"i_\240\193\129\199<W\
\\250nC\CAN\212\CAN\162J\160\141C\178\133\216;\
\\\@4\144-W\203\209x\205\140\166\RS\163\237]9f\
\\170\143\ACK\163g\223\STX\184\&7\rH\222\FSW\
\\130\&7D\197\NUL\164\&0U\193\186\t\186o\
\\228\180~\NUL\a6\249\137#\SOH\NUL\NUL"
main = print =<< M.lookup "ghc" m
where
-- build the table from the bytestring:
m :: M.Map String (Maybe String)
m = decode . decompress . fromChunks . return $ mytable
आपको इसे मानचित्र में लाने के लिए अपने तरीके से आना होगा, लेकिन http://hackage.haskell.org/package/file-embed इसे आपके संकलित बाइनरी में लाएगा। हम इसे अपने कुछ वेब अनुप्रयोगों में टेम्पलेट एम्बेड करने के लिए उपयोग करते हैं।
आप एक कस्टम Makefile
/Setup.hs
हुक का उपयोग करें और windres
आह्वान कर सकते हैं (यदि आप Windows पर हैं) या objcopy
/elfrc
(यदि आप लिनक्स पर कर रहे हैं) Coff/ELF वस्तुओं है जिसे आप के साथ गठजोड़ कर सकते हैं करने के लिए संसाधनों को संकलित करने के अंतिम निष्पादन योग्य बनाने के लिए आपकी हास्केल ऑब्जेक्ट फ़ाइलें। फिर आप इस तरह हास्केल FFI (नहीं परीक्षण किया) का उपयोग कर संसाधनों का उपयोग कर सकते हैं:
-- We have an image resource called "_imgdata"
foreign import ccall "&" _imgdata :: CString
-- Size of _imgdata is 405585 bytes.
imgdata :: CStringLen
imgdata = (_imgdata, 405585)
यह समाधान file-embed का उपयोग कर से अधिक कुशल हो जाएगा (कोई CString
->ByteString
रूपांतरण चल रहा), लेकिन यह भी अधिक शामिल।
एक तरफ, मुझे संसाधन फ़ाइल समर्थन during my work on cabal-install की आवश्यकता भी समाप्त हो गई, इसलिए इसे शायद कैबल के कुछ भविष्य के संस्करण में एकीकृत किया जाएगा (यदि मैं इसे कार्यान्वित करूंगा)।
मैं दृढ़ता से यहां Template Haskell उपयोग करने के लिए, फ़ाइल को लोड और यह एक हास्केल डाटाटाइप में बदल जाने की सिफारिश करेंगे। यह न केवल अंतिम बाइनरी में संकलित किया जाएगा, बल्कि पूरी तरह अनुकूलित भी होगा।
- 1. स्थिर बाइनरी कैसे संकलित करें?
- 2. हास्केल को स्थिर पुस्तकालय में कैसे संकलित करें?
- 3. संकलित बाइनरी (.so)
- 4. हास्केल: फ्लैट बाइनरी पेड़
- 5. हास्केल बाइनरी पार्सिंग
- 6. वास्तव में वास्तविक बाइनरी में संकलित प्रोग्राम हैं?
- 7. कैसे हास्केल चर भौतिकी में हास्केल में
- 8. बाइनरी फ़ाइल में डेटा कैसे संलग्न करें?
- 9. वी 8 संकलित जावास्क्रिप्ट को EXE में कैसे चालू करें?
- 10. मैवेन में निर्भरता कैसे संकलित करें?
- 11. क्या मुझे अपने सबवर्जन रिपोजिटरी में संकलित बाइनरी जोड़नी चाहिए?
- 12. संकलित बाइनरी में जी ++ स्टोर क्लास का नाम क्यों है?
- 13. क्या सी # कोड देशी बाइनरी में संकलित है?
- 14. हास्केल: "\ 0" "\ 0" में कैसे प्राप्त करें?
- 15. हास्केल में पॉइंटर मूल्य कैसे प्राप्त करें?
- 16. सक्रियडमिन में नेस्टेड संसाधन कैसे घोषित करें?
- 17. हास्केल की बहु .hs फ़ाइलों को संकलित करें - यूनिक्स
- 18. यह हास्केल कोड क्यों संकलित करता है?
- 19. फैब्रिक हास्केल में बराबर है?
- 20. gcc: 32-बिट प्लेटफ़ॉर्म पर 64-बिट बाइनरी संकलित करें
- 21. तैनाती में हास्केल स्टेटिक बनाम डायनामिक लिंकिंग
- 22. एमएसवीसी में एक बाइनरी सेक्शन में पॉइंटर कैसे प्राप्त करें?
- 23. जावा में फ़ाइल में बाइनरी डेटा कैसे आउटपुट करें?
- 24. bash में sqlite3 डेटाबेस में बाइनरी डेटा कैसे सम्मिलित करें?
- 25. जीसीसी संकलित बाइनरी w/विभिन्न आकार?
- 26. इस हास्केल प्रोग्राम के प्रदर्शन में सुधार कैसे करें?
- 27. हास्केल में किसी सूची में तत्व को कैसे स्थानांतरित करें?
- 28. हास्केल में वास्तव में/प्राप्त/प्रारंभिक स्थिति कैसे प्राप्त करें?
- 29. हास्केल में तर्कसंगत में दशमलव अंश को कैसे पार्स करें?
- 30. ASP.NET MVC में संकलित वैश्विक संसाधनों का उपयोग कैसे करें
क्या इसके टेम्पलेट के बाद से अंतिम उपयोगकर्ता द्वारा फ़ाइल-एम्बेड की आवश्यकता नहीं है? – alternative
क्या निष्पादन योग्य फ़ाइल को एम्बेड करना समझ में आता है? –