c++ विजुअल स्टूडियो 2012 का उपयोग करें और पुराने प्लेटफार्म टूलसेट के साथ संकलित करें?




visual-studio dll (4)

समस्या

मैं सी ++ डीएलएल विकसित करने के लिए विजुअल स्टूडियो 2012 का उपयोग कर रहा हूं। कुछ मशीनों पर इन डीएलएल को लोड नहीं किया जा सकता है, क्योंकि प्लेटफ़ॉर्म टूलसेट, जो "v110" पर सेट है, गायब है।

मैंने पुराने सी ++ रनटाइम्स को स्थापित करने का प्रयास किया है। उन्होंने इंस्टॉल नहीं किया क्योंकि "एक नया संस्करण पहले से स्थापित है"। मैंने वर्तमान विंडोज एसडीके भी स्थापित किया है, लेकिन v110 से चुनने के लिए अभी भी कोई अन्य आइटम नहीं है।

सवाल

मैं अपने सी ++ डीएलएल को सी ++ रनटाइम के पुराने संस्करण के साथ कैसे संकलित कर सकता हूं ताकि यह गैर-डेवलपर मशीनों पर चल सके?


मैं कुछ जानकारी साझा करना चाहता हूं, जो मैंने पार किया और यह पता लगाया कि मेरे उद्देश्य के लिए उनका उपयोग कैसे किया जाए।

स्पष्ट रूप से यह स्थिर लिंकिंग का उपयोग करने का एक अच्छा विकल्प है। यह हमेशा मेरे लिए काम नहीं करता था, लेकिन मेरी एक छोटी परियोजना के लिए, यह काफी अच्छा काम करता है। और परिणाम एक DLL है जिसमें kernel32.dll अलावा कोई निर्भरता नहीं है।

बस रिलीज कॉन्फ़िगरेशन के लिए /MT /MTd डीबग के लिए /MTd उपयोग करें और आप ठीक होंगे।

यहां समस्या यह है कि मेरे जैसे डेवलपर को रिलीज के कुछ ही समय बाद वर्तमान विजुअल स्टूडियो संस्करण मिलता है, लेकिन आप वास्तव में सामान्य उपयोगकर्ताओं को रनटाइम स्थापित करने की उम्मीद नहीं कर सकते हैं जो केवल कुछ हफ्ते पुरानी हैं। और पुराने रनटाइम का उपयोग करने के लिए केवल विजुअल स्टूडियो के विभिन्न संस्करणों को स्थापित करना निश्चित रूप से आप नहीं चाहते हैं।


अच्छा यह निर्भर करता है कि आप क्या बनाने की कोशिश कर रहे हैं। कुछ चीजें शायद विंडोज एसडीके 7.1 स्थापित करने के माध्यम से समर्थित हैं। इस पोस्ट को एक ही प्रश्न देखें , लेकिन यदि आपकी परियोजना एमएफसी पर निर्भर है तो दुर्भाग्यवश ऐसा लगता है कि यह संभव नहीं है, मुख्य रूप से क्योंकि कुछ भी नहीं, लेकिन वीएस -2010 एमएफसी पुस्तकालयों को तैनात कर रहा है।


इंटरनेट संग्रह के लिए एक संकेत। (मैं ऊपर दिए गए बयान पर टिप्पणी नहीं कर सकता, मुझे नहीं पता क्यों)

एक नए विजुअल स्टूडियो (आई टेस्टेट 2013 और 2015) में v90 प्लेटफ़ॉर्म टूलसेट (= विजुअल स्टूडियो 2008) का उपयोग करने के लिए आपको विजुअल स्टूडियो 2008 और इसके अतिरिक्त विजुअल स्टूडियो 2010 को स्थापित करने की आवश्यकता है, क्योंकि एमएस बिल्ड प्रोग्राम फ़ोल्डर में बनाम 9 0 प्लेटफ़ॉर्म टूलसेट परिभाषाएं हैं भाग वॉन विजुअल स्टूडियो 2010।

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\PlatformToolsets v90 और v100 के लिए C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\PlatformToolsets

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0

वी 110 वी 120 और वी 140 के लिए

विजुअल स्टूडियो संस्करणों का प्रतिनिधित्व करना: v90 = 2008, v100 = 2010, V110 = 2012, V120 = 2013, V140 = 2015।

इंस्टॉलेशन vob VS2010 के बाद नया विजुअल स्टूडियो 2013 और 2015 संस्करण बनाम 9 0 और बनाम 100 प्लेटफ़ॉर्म टूलसेट का उपयोग कर सकता है। (यह विजुअल स्टूडियो 2013/2015 की एक नई स्थापना के बिना immidiadtly काम करता है।) मुझे लगता है कि विजुअल स्टूडियो 2012 इसे VS2013 और VS2015 जैसा ही कर रहा है।


एमएसडीएन पर इस पृष्ठ के मुताबिक, आपको विजुअल स्टूडियो (2008 या 2010) का प्रासंगिक संस्करण, या "प्लेटफॉर्म टूलसेट" के लिए संबंधित विंडोज एसडीके को उन संस्करणों को सूचीबद्ध करने के लिए ड्रॉप डाउन होना चाहिए:

लक्ष्य प्लेटफ़ॉर्म टूलसेट को बदलने के लिए, आपके पास विजुअल स्टूडियो या Windows प्लेटफ़ॉर्म एसडीके का संबद्ध संस्करण स्थापित होना चाहिए।

आप "प्लेटफार्म टूलसेट" के बीच थोड़ा उलझन में प्रतीत होते हैं, जो संकलक / लिंकर / आदि को नियंत्रित करता है। आपके आवेदन को बनाने के लिए प्रयोग किया जाता है, और "विजुअल सी ++ पुनर्वितरण योग्य", जिसे आपके एप्लिकेशन को चलाने के लिए आवश्यक है। आप किसी उपयोगकर्ता के पीसी पर "प्लेटफ़ॉर्म टूलसेट" इंस्टॉल नहीं कर सकते हैं, और न ही आप अपने विकास पीसी पर एक विशेष "विजुअल सी ++ पुनर्वितरण योग्य" स्थापित करके एक उपलब्ध कराएंगे।

साथ ही, जहां तक ​​मुझे पता है, दृश्य सी ++ पुनर्वितरण योग्य में एमएफसी रनटाइम शामिल नहीं है। वे एक अलग एमएसआई मर्ज मॉड्यूल (एमएसएम) के रूप में उपलब्ध हैं।





visual-c++-runtime