2013-05-18 6 views
9

पर निर्भर है मैं सी ++ प्रोग्रामिंग में नया हूं और अभी एक सरल कैलकुलेटर बनाना समाप्त कर चुका हूं। मैंने इसे अपने दोस्तों के साथ साझा करने का फैसला किया और कई प्रयासों के बाद यह पता चला कि रिलीज मोड में इसे कैसे संकलित किया जाए। हालांकि, यहां तक ​​कि रिलीज मोड में भी यह अभी भी MSVCP110D.dll पर निर्भर है। मैं सोच रहा था कि क्या इसे ठीक करने का कोई तरीका था?रिलीज मोड अभी भी MSVCP110D.dll (सी ++ एमएसवीएस)

+0

केवल बाहर संसाधनों मैं में खींच रहा #include "stdafx.h" # शामिल # शामिल # शामिल हैं लेकिन मैं यह धारणा थी कि रिलीज़ मोड में इस बाहर संसाधनों और के लिए सभी की आवश्यकता को दूर करेंगे पूरी तरह से अंदर चला जाएगा। –

+0

आप msvcp100d.dll पर निर्भरता रखते हैं कि आप * * जानते हैं कि आप कैसे जानते हैं कि आप स्वयं या हमारी सहायता नहीं कर रहे हैं। आप ** ** msvcp110.dll पर रिलीज बिल्ड में निर्भरता रखते हैं, इसमें iostream के लिए कोड शामिल है। आपको इसे अपने .exe, msvcr110.dll के साथ भी कॉपी करने की आवश्यकता है। या बस प्रभाव में/एमटी के साथ निर्माण, सरल कार्यक्रमों के लिए ठीक है जो डीएलएल का उपयोग नहीं करते हैं। –

+0

क्या आपने निर्भरता वॉकर का उपयोग करने का प्रयास किया था? – makc

उत्तर

6

1) MSVCP110D.dll एमएस सी रनटाइम लाइब्रेरी के "डीबग" संस्करण के लिए रनटाइम। डीएल है। तो ऐसा लगता है कि आपका .exe शायद "रिलीज़" के लिए बिल्कुल सही नहीं बनाया गया हो।

http://www.microsoft.com/en-us/download/details.aspx?id=30679

3) यहाँ इस विशेष समस्या के बारे में अधिक जानकारी है::

http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvc/thread/e128dff6-cef5-4a81-b6de-fcbcaa7a23bb

दुर्भाग्य

2) यहाँ "दृश्य स्टूडियो रनटाइम पुनर्वितरण के लिए" जानकारी है msvcp100D.dll एक डीबग डीएल है और इसमें माइक्रोसॉफ्ट विजुअल सी ++ रेडिस्ट्रूटेबल पैक में शामिल नहीं है उम्र। यह becouse सामान्य रूप से डीबग संस्करण डेवलपर के अलावा अन्य रिलीज़ नहीं होता है। डेवलपर ने इसे विजुअल स्टूडियो के साथ डिफ़ॉल्ट रूप से स्थापित किया है।

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

नहीं तो आप सभी पुस्तकालयों की स्थिर लिंक कर सकते हैं (निर्दिष्ट संकलक विकल्पों में रिलीज में/मीट्रिक टन और डीबग विन्यास में/MTD): लेकिन व्यक्तिगत रूप से मैं इसकी सलाह नहीं देते क्योंकि आप निष्पादन योग्य कई जानकारी में डाल (डीबगर द्वारा उपयोग किया जाता है) जो आपके ऐप को धीमा कर देगा।

+0

मेरे लिए हल किया गया। हाल ही में इसी तरह की समस्या में आया था। सबसे अजीब बात यह है कि मेरा परिणामस्वरूप डीएलएल MSVCR100.dll (बिना 'डी') पर निर्भर था, जो सही था क्योंकि मैंने/एमडीडी/एमडी में बदल दिया, लेकिन एमएसवीसीपी 100 डी डीएल पर भी निर्भर था, जो उसी कारण से सही नहीं लगता था। लंबी जांच के बाद मैंने पाया कि यह प्रीप्रोसेसर परिभाषाओं पर निर्भर करता है। DEDEUG को _DEBUG को बदलने से मेरे लिए समस्या हल हो गई। – Nahum

3

मैं आपकी समस्या का अनुमान लगा रहा हूँ dll & नहीं dll पर ही निर्भरता के डिबग संस्करण पर निर्भरता के साथ है।

यह अत्यधिक संभावना आप इन 2 बातें

  1. /DDEBUG या /D_DEBUG या

  2. साथ संकलन msvcpd.lib

के साथ जोड़ने में से एक कार्य जब आप /DDEBUG या साथ संकलन है /D_DEBUG, और #include मानक सी ++ हेडर में से एक में आईएनजी, तो msvcpd.lib i (with a #pragma(lib) में खींच लिया गया है जो msvcpd ***। dll पर निर्भरता की ओर जाता है।

msvcp (डी) *। डीएल मानक सी ++ लाइब्रेरी का डीएलएल संस्करण है।

यदि इसके बजाय, आपकी समस्या किसी भी संस्करण पर निर्भरता के साथ है, तो आप स्थिर रूप से C++ लाइब्रेरी से लिंक करना चाहते हैं, तो आप _STATIC_CPPLIB के साथ अपने प्रोग्राम को संकलित कर सकते हैं।

+0

मुझे खेद है, मैं इसके लिए अविश्वसनीय रूप से नया हूं। लेकिन मैं डीएलएल को स्थिर रूप से जोड़ने के बारे में कैसे जाउंगा? जब मैंने इसे संकलित किया तो मैंने संकलन प्रकार को डीबग से रिलीज़ करने के लिए बदल दिया। इसके बाद इसमें मेरे .exe और .cpp के साथ एक रिलीज़ फ़ोल्डर बनाया गया था। –

+0

@ user2396111 समाधान पर राइट क्लिक करें -> गुण, सी/सी ++, प्रीप्रोसेसर-> विभिन्न मौजूदा प्रीप्रोसेसर परिभाषाओं में _STATIC_CPPLIB जोड़ें। साथ ही जब आप वहां हों, तो जांचें कि DEBUG या _DEBUG पहले ही परिभाषित है या नहीं। – user93353

+1

यह नहीं है, वीएस2012 में एक बहिष्कृत विकल्प भी है। सी/सी ++, कोड जेनरेशन, रनटाइम लाइब्रेरी =/एमटी –

0

क्या आप कोई अतिरिक्त पुस्तकालय का उपयोग कर रहे हैं? हो सकता है कि आपने अपने निष्पादन योग्य के साथ एक डीएलएल फ़ाइल का डीबग संस्करण शामिल किया हो।

संबंधित मुद्दे