मैं विजुअल स्टूडियो 2005 का उपयोग कर ओपन-सोर्स सी ++ लाइब्रेरी बना रहा हूं। मैं स्रोत कोड के साथ प्रीबिल्ट libs प्रदान करना चाहता हूं। क्या ये libs, VS2005 के साथ निर्मित हैं, वे विजुअल स्टूडियो (एएसपी वीएस एक्सप्रेस संस्करण 2008) के नए संस्करणों के साथ भी काम करने जा रहे हैं? या मुझे प्रति वीएस संस्करण अलग-अलग libs प्रदान करने की आवश्यकता है?क्या सी ++ libs विजुअल स्टूडियो के विभिन्न संस्करणों के साथ एक-दूसरे के साथ संगत हैं?
उत्तर
यदि आप स्थैतिक पुस्तकालयों को वितरित कर रहे हैं, तो आप जो भी कर रहे हैं उसके आधार पर आप संस्करण-स्वतंत्र पुस्तकालयों को वितरित करने में सक्षम हो सकते हैं। यदि आप केवल ओएस को कॉल कर रहे हैं, तो आप ठीक हो सकते हैं। सी आरटीएल कार्यों, शायद। लेकिन यदि आप किसी भी सी ++ मानक लाइब्रेरी फ़ंक्शन, कक्षाएं या टेम्पलेट्स का उपयोग करते हैं, तो शायद नहीं।
यदि डीएलएल वितरित करते हैं, तो आपको प्रत्येक वीएस संस्करण के लिए अलग-अलग पुस्तकालयों की आवश्यकता होगी। कभी-कभी आपको विभिन्न सेवा-पैक स्तरों के लिए अलग-अलग पुस्तकालयों की भी आवश्यकता होती है। और जैसा कि वोल्करके द्वारा उल्लेख किया गया है, आपकी लाइब्रेरी के उपयोगकर्ताओं को संगत कंपाइलर और लिंकर सेटिंग्स का उपयोग करना होगा। और यहां तक कि यदि आप सबकुछ सही करते हैं, तो उपयोगकर्ताओं को अन्य पुस्तकालयों से लिंक करने की आवश्यकता हो सकती है जो किसी भी तरह से आपके साथ असंगत हैं।
इन मुद्दों के कारण, अपने उपयोगकर्ताओं के लिए इन सभी पुस्तकालयों को बनाने की कोशिश करने में समय बिताने के बजाय, मैं उन्हें जितना संभव हो सके उतना आसान बनाने के लिए समय बिताना चाहता हूं, ताकि उपयोगकर्ता उन्हें न्यूनतम रूप से स्वयं बना सकें गड़बड़।
और यहां तक कि परियोजना सेटिंग्स/कंपाइलर झंडे भी एक ही संकलक संस्करण के भीतर बाइनरी असंगत कोड का कारण बन सकते हैं, उदा।/जेडसी: wchar_t (जो डिफ़ॉल्ट रूप से चालू है VS2005 में एक तोड़ने वाला परिवर्तन था) – VolkerK
सामान्य रूप से नहीं, नहीं। वीएस टूल्स के साथ बनाए गए पुस्तकालयों को 'माइक्रोसॉफ्ट सी रनटाइम' (जिसे एमएसवीसीआरटी कहा जाता है, संस्करण संस्करण के बाद) में जोड़ा जाता है जो सी और सी ++ मानक लाइब्रेरी फ़ंक्शंस प्रदान करता है, और यदि आप ऐसे प्रोग्राम को चलाने का प्रयास करते हैं जिसके लिए इस रनटाइम के दो अलग-अलग संस्करणों की आवश्यकता होती है तो त्रुटियां घटित होंगी।
इस पर, विभिन्न कंपाइलर संस्करण अलग संकलित कोड को मंथन करते हैं और एक कंपाइलर संस्करण से कोड अक्सर सबसे छोटे मामलों में से दूसरे के साथ संगत नहीं होता है (और यदि वे एक ही कोड को मंथन करते हैं तो वहां अलग-अलग संस्करण होने का कोई मतलब नहीं है :))
> यदि आप कोई प्रोग्राम चलाने का प्रयास करते हैं जिसके लिए इस रनटाइम के दो अलग-अलग संस्करणों की आवश्यकता होती है तो त्रुटियां होती हैं। यह हमारे लिए काम करता है, हमारे बाहरी पुस्तकालयों में से एक पुराने एमएसवीसीआरटी *। डीएल – KindDragon
आम तौर पर विभिन्न कंपाइलर्स, एक ही कंपाइलर के विभिन्न संस्करणों और उसी कंपाइलर संस्करण की विभिन्न सेटिंग्स के साथ बनाए गए पुस्तकालयों के खिलाफ लिंक करना संभव नहीं है और एक कार्यरत एप्लिकेशन प्राप्त करना संभव नहीं है। (हालांकि यह भाषा और एसडीडी लाइब्रेरी के विशिष्ट सबसेट्स के लिए काम कर सकता है।) सी ++ के लिए कोई मानक बाइनरी इंटरफ़ेस नहीं है - सी में कुछ सामान्य प्लेटफ़ॉर्म के लिए भी नहीं है क्योंकि सी
प्राप्त करने के लिए, आपको या तो अपनी लाइब्रेरी को सी एपीआई में लपेटें या आपको प्रत्येक कंपाइलर, कंपाइलर संस्करण और कंपाइलर सेटिंग के लिए बाइनरी भेजनी होगी जिसे आप समर्थन देना चाहते हैं।
का उपयोग करता है जीसीसी एक मानक एबीआई परिभाषित करता है कि जीसीसी उपयोग के सभी संस्करण। इंटेल का कंपाइलर उसी एबीआई का उपयोग करता है, इसलिए इंटेल द्वारा संकलित पुस्तकालयों का उपयोग जीसीसी द्वारा किया जा सकता है। हालांकि, एमएसवीसीआरटी और ग्लिबैक लाइब्रेरी और एप्लिकेशन के अनुसार वर्कमाड 3 द्वारा उल्लिखित आवेदन के समान होना चाहिए। –
@ कैस्पिन: हां, लेकिन यह तब भी विफल हो जाता है जब उस एबीआई के दोनों पक्ष std lib और अन्य सभी लाइब्रेरी के समान संस्करण का उपयोग नहीं करते हैं जिनके प्रकार वे सीमा पार करना चाहते हैं। यह त्रुटियों को डीबग करने के लिए बहुत मुश्किलों के लिए एक टिकट है जो केवल कुछ दुर्लभ परिस्थितियों में दिखाया जा सकता है। BTDT। – sbi
यदि आपकी लाइब्रेरी प्रोजेक्ट एक स्थिर लाइब्रेरी है, तो आपको अपने विज़ुअल स्टूडियो संस्करण के लिए एक बिल्ड की आपूर्ति करना होगा, जिसे आप अपने उपयोगकर्ताओं में रखना चाहते हैं। उदाहरण में आपने दिया है, जो एक वीएस2005 दोनों प्रदान करने के बराबर है और एक वीएस -2008 पुस्तकालय।
यदि आपकी लाइब्रेरी प्रोजेक्ट गतिशील लाइब्रेरी है, तो, आप कुछ हद तक समस्याओं से बचते हैं, लेकिन इसका मतलब है कि उपयोगकर्ताओं को यह सुनिश्चित करना होगा कि वे 'माइक्रोसॉफ्ट सी रनटाइम' का उपयोग करें जो आपके निर्माण वातावरण के अनुकूल है। आप उस मानदंड को खत्म कर सकते हैं जब आप अपनी गतिशील लाइब्रेरी में 'माइक्रोसॉफ्ट सी रनटाइम' को स्थिर रूप से लिंक करते हैं।
- 1. बूस्ट :: विभिन्न बूस्ट संस्करणों के साथ TIME_UTC (_)
- 2. एंड्रॉयड cmake नए NDK संस्करणों के साथ संगत है?
- 3. विजुअल स्टूडियो 2010 आईडीई विजुअल सी ++ 6.0 कंपाइलर के साथ?
- 4. क्या मैं विजुअल स्टूडियो एक्सप्रेस संस्करणों के साथ वाणिज्यिक कोड का उत्पादन कर सकता हूं?
- 5. विजुअल स्टूडियो 2010 बीटा विजुअल स्टूडियो 2010 के साथ-साथ स्थापित किया जा सकता है?
- 6. विजुअल स्टूडियो 2010 व्यावसायिक समाधान/परियोजनाएं विजुअल स्टूडियो 2010 प्रीमियम सॉल्यूशंस/प्रोजेक्ट्स के साथ 100% संगत हैं?
- 7. विभिन्न उबंटू संस्करणों के लिए संकलित सी ++
- 8. सी # सी ++ वेक्टर के बराबर, संगत स्मृति के साथ?
- 9. विभिन्न संस्करणों के साथ कई साझा पुस्तकालयों को लोड करना
- 10. एकाधिक फ़ोल्डर्स के साथ विजुअल स्टूडियो प्रोजेक्ट
- 11. विजुअल स्टूडियो शैल के साथ कोई अनुभव?
- 12. क्या विजुअल स्टूडियो 2012 csproj 2010 के साथ पिछड़ा संगत है?
- 13. विजुअल स्टूडियो अलमारियों के साथ इतिहास देखें
- 14. विजुअल स्टूडियो सी ++ मेनिफेस्ट फाइलों के साथ काम करना
- 15. विजुअल स्टूडियो डब्ल्यूपीएफ डिजाइनर के साथ समस्या! :(
- 16. विजुअल स्टूडियो संस्करणों के बीच अलग-अलग मेमोरी व्यवहार
- 17. विजुअल स्टूडियो के साथ डीबग, एएसपी.नेट एमवीसी
- 18. क्या सीडीआई घटना पर्यवेक्षक विधियां ईजेबी के साथ संगत हैं?
- 19. "सी के साथ लेआउट-संगत" का क्या अर्थ है?
- 20. VISual स्टूडियो 2010 रंग योजनाएं रीशेपर के साथ संगत?
- 21. पाइथन के विभिन्न ओएस/संस्करणों के लिए आप पाइथन सी/सी ++ एक्सटेंशन कैसे संकलित करते हैं?
- 22. क्या दृश्य स्टूडियो के संस्करणों समवर्ती स्थापित किया जा सकता?
- 23. जावा पुस्तकालयों के विभिन्न संस्करणों को मिलाकर
- 24. विजुअल स्टूडियो सी
- 25. एक आवेदन के दो संस्करणों को बनाए रखने और तैनात करने के साथ-साथ
- 26. विंडोज सर्वर 2012 पर विजुअल स्टूडियो 2012 के साथ निराश
- 27. क्या एसक्यूएल सर्वर प्रबंधन स्टूडियो विजुअल स्टूडियो के साथ आता है?
- 28. क्या विजुअल स्टूडियो 2010 आरसी विजुअल स्टूडियो 2008 के साथ अच्छा खेलता है?
- 29. विजुअल स्टूडियो 2008, सी ++ के लिए प्रोफाइलर?
- 30. विभिन्न रंगों के साथ लेआउट
नहीं, मेरे व्यक्तिगत अनुभव में मैं 2008 में वीसी 6 द्वारा उत्पन्न लाइब्रेरी का उपयोग करने में सक्षम नहीं था। – Satbir
क्या आपने स्थिर पुस्तकालयों के बजाय डीएलएल प्रदान करने पर विचार किया है? मान लीजिए कि आप "खतरनाक" संचालन नहीं कर रहे हैं (जैसे क्लाइंट कोड में आपकी लाइब्रेरी में संबंधित डीलोकेशन के साथ मेमोरी आवंटन) क्लाइंट बस आपके लाइब्रेरी को लोड कर सकता है चाहे आप इसे किस कंपाइलर के साथ बनाते हैं या आप किस पुस्तकालय से जुड़े हैं। –
यह भी देखें: http: // stackoverflow।कॉम/प्रश्न/8439595/हैं-संकलित-lib-files-interchangeable-के-अलग-संस्करण-के-माइक्रोसॉफ्ट-विसु – DuckMaestro