मैं एक हास्केल लाइब्रेरी पैकेज पर काम कर रहा हूं जिसके लिए कुछ ओएस एपीआई से बात करने के लिए विंडोज़ पर कस्टम। डीएल और .lib की आवश्यकता होती है। .lib लाइब्रेरी में extra-libraries
फ़ील्ड के साथ जुड़ा हुआ है और डीएलएल data-files
के साथ कैबल पैकेज निर्देशिका में स्थापित है।पुस्तकालय उपयोगकर्ताओं के लिए लाइब्रेरी संकलन के लिए आवश्यक स्थिर .lib भी आवश्यक है?
किसी कारण से (मैं किसी भी माध्यम से जोड़ने पर एक विशेषज्ञ नहीं हूं, लेकिन यह अजीब लगता है) यदि मैं एक परीक्षण निष्पादन योग्य बनाता हूं जो मेरे पैकेज का उपयोग करता है (build-depends
फ़ील्ड में), तो वह इसमें लिंक करना चाहता है। lib पुस्तकालय संकलित करने के लिए प्रयोग किया जाता है - भले ही यह सिर्फ लाइब्रेरी फ़ंक्शंस को कॉल कर रहा हो, भले ही कोई भी .lib खुलासा न हो। स्पष्ट रूप से इसे रनटाइम पर .dll तक पहुंच की आवश्यकता है लेकिन इसकी अपेक्षा की जा सकती है। .lib की आवश्यकता भी अजीब लगता है।
मुझे उम्मीद है कि .lib पहले से ही मेरी लाइब्रेरी के लिए स्थापित होने पर कैबल/जीएचसी द्वारा उत्पन्न .a फ़ाइल में लिंक हो जाएगा। क्या यह मामला नही है? और यदि यह है, तो क्या कोई यह समझा सकता है कि ऐसा क्यों है?
क्या वेनिला पुस्तकालयों के लिए 'ar' के बजाय' ld -r' का उपयोग करने के लिए मजबूर करने का कोई तरीका है? मैंने 'ld-options: -r' जोड़ने का प्रयास किया है लेकिन ऐसा कुछ प्रतीत नहीं होता है (संभवतः क्योंकि 'ld' का उपयोग नहीं किया जा रहा है?) –
@TomSavage नहीं, मुझे लगता है कि यह संभव नहीं है। लेकिन मैं कैबल में एक विशेषज्ञ नहीं हूँ। – Yuras