2008-08-06 4 views
31

मैं सोच रहा हूं कि रिहाई बनाने के लिए कैसे सभी आवश्यक डीएलएल फाइलों को .exe में शामिल किया गया है ताकि प्रोग्राम को गैर-विकास मशीन पर चलाया जा सके, बिना लक्ष्य मशीन पर माइक्रोसॉफ्ट पुनर्वितरण योग्य स्थापित किया जा सके।रिलीज के लिए आप विजुअल स्टूडियो सी ++ प्रोजेक्ट कैसे पैक करते हैं?

ऐसा करने के बिना आपको त्रुटि संदेश मिलता है कि एप्लिकेशन कॉन्फ़िगरेशन सही नहीं है और पुनर्स्थापित करने के लिए।

+0

बस इनो सेटअप जैसे सेटअप विज़ार्ड का उपयोग करें। विशेष रूप से इनो सेटअप का उपयोग करना वास्तव में आसान है यदि आपको केवल फाइलों का एक गुच्छा पैक करना है। – sashoalm

उत्तर

17
  1. चुनें परियोजना -> गुण
  2. विन्यास का चयन करें -> सामान्य
  3. बॉक्स में कैसे आप MFC लिंक करना चाहिए, स्थिर यह लिंक करना चुनते के लिए।
  4. लिंकर चुनें -> इनपुट। के तहत अतिरिक्त निर्भरता, तो उन लाइब्रेरी स्थिर में लिंक करने के लिए अपने अनुप्रयोग जोड़ें।
+3

मुझे कुछ याद आ रहा है (मैं एक विशेषज्ञ के कुछ भी नहीं हूं) लेकिन आपके चरणों का पालन करने के बाद भी मुझे * exe * फ़ोल्डर में सभी * dll * को पैकेज करना होगा। क्या यह ओपी का इरादा * exe * फ़ाइल में पैक किया गया सब कुछ नहीं था? – Malabarba

+0

@ ब्रूसकोनर।पुस्तकालयों को जोड़ने से उन्हें स्थाई रूप से निष्पादन योग्य फ़ाइल में शामिल किया जाता है। इसके विपरीत गतिशील लिंकिंग कहा जाता है जो स्टार्टअप पर 'dll's (= डुनामी लिंक लाइब्रेरी) के निष्पादन योग्य दिखने देगा। – danijar

0

आप स्थिर लिंक करने के लिए विचार करना होता है (जैसा कि विरोध किया गतिशील रूप से जोड़ने के लिए)

मुझे यकीन है कि कैसे एमएस के कई स्थिर redistributables में लिंक नहीं कर रहा हूँ।

0

आप पता लगाने के लिए देख रहे हैं जो डीएलएल की आपकी लक्ष्य मशीन गायब है, तो निर्भर करता है निर्भर करता है। exe जो MSDev के साथ आती थी, लेकिन here भी मिल सकती है। कुछ लक्ष्य मशीनों पर इसका परीक्षण करना आपको बताएगा कि आपको अपने आवेदन के साथ कौन सा डीएलएल पैकेज करना होगा।

10

आप चलाने के समय पुस्तकालय स्थापित करने की आवश्यकता (तहत C/C++ -> कोड पीढ़ी) स्थिर लिंकेज के लिए सभी परियोजनाओं, जो निम्न डिफ़ॉल्ट इमारत विन्यास को संबद्ध करता है के लिए:

  • थ्रेड डीबग/रिलीज
  • Singlethreaded डीबग/रिलीज

के रूप में उन पुस्तकालयों की "DLL" संस्करण के लिए विरोध किया।

भले ही आप ऐसा करते हैं, पुस्तकालयों के उपयोग के आधार पर, आपको मर्ज मॉड्यूल/फ्रेमवर्क/आदि स्थापित करना पड़ सकता है। यह इस बात पर निर्भर करता है कि आपकी निर्भरताओं के स्थिर एलआईबी संस्करण उपलब्ध हैं या नहीं।

4

, ध्यान रखें कि Microsoft do not recommend that you static link the runtime into your project के रूप में इस Windows अद्यतन द्वारा सेवित किया जा रहा महत्वपूर्ण सुरक्षा कीड़े को ठीक करने से रोकता है। यदि आप अपनी मुख्य .exe और .dll फ़ाइलों के बीच मेमोरी पास कर रहे हैं तो संभावित समस्याएं भी हैं जैसे कि इनमें से प्रत्येक स्थिर रनटाइम लिंक करता है जिसे आप मॉलोक/फ्री मिस्चैच समस्याओं के साथ समाप्त कर सकते हैं।

आप डीएलएल को निष्पादन योग्य के साथ शामिल कर सकते हैं, उन्हें .exe में संकलित किए बिना और रेडिस्ट टूल चलाने के बिना - यह वही है जो मैं करता हूं और ऐसा लगता है कि यह ठीक काम करता है।

मलम में एकमात्र फ्लाई यह है कि यदि आप Windows संस्करणों की एक विस्तृत श्रृंखला के लिए वितरित कर रहे हैं तो आपको फ़ाइलों को दो बार शामिल करने की आवश्यकता है - नए ओएस को मैनिफेस्ट-परिभाषित निर्देशिकाओं में फ़ाइलों की आवश्यकता होती है, और पुराने सभी फाइलें चाहते हैं कार्यक्रम निर्देशिका में।

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