2010-10-15 8 views
6

मेरे पास सी प्रोग्राम है जो मैं विंडोज पर mingw के साथ संकलित करता हूं। यह ठीक काम करता है लेकिन MSVCRT.DLL की आवश्यकता है। मैं उस स्थिर रूप से लिंक करना चाहता हूं (जैसे मैं विजुअल स्टूडियो में कर सकता हूं)। क्या यह संभव है?क्या मैं mingw के साथ स्थिर रूप से MSVCRT को लिंक कर सकता हूं?

मैंने -staticgcc पर ध्वज की कोशिश की और इससे कोई बदलाव नहीं हुआ।

मानक सी ++ लाइब्रेरी का उपयोग कर सी ++ प्रोग्राम के बारे में क्या?

+0

आपके अंतिम प्रश्न के बारे में ... यदि आप एसटीएल के बारे में बात कर रहे हैं, तो यह केवल हेडर है। –

+0

@ आर्मेन: लेकिन सी ++ एमएसवीसीपीटी के लिए डीएलएल भी नहीं है या ऐसा कुछ है? – zaharpopov

+0

ध्यान दें कि MSVCRT.DLL को विंडोज़ के हर संस्करण में सिस्टम घटक के रूप में शामिल किया गया है, जिसे आम तौर पर आप सामना करना पड़ सकते हैं। विशेष रूप से, आपको इसे अपने एप्लिकेशन के साथ वितरित करने की आवश्यकता नहीं है क्योंकि आपके अंतिम उपयोगकर्ताओं के पास पहले से ही यह होगा। एक प्राकृतिक सवाल यह है कि आपको इसके लिए गतिशील संबंध से बचने की आवश्यकता क्यों है? – RBerteig

उत्तर

7

मुझे विश्वास है कि MinGW कॉपीराइट कारणों से स्थिर रनटाइम लाइब्रेरी का उपयोग नहीं करता है।

आप शायद एक निष्पादन योग्य है कि gcc -static -static-libgcc -static-libstdc++ साथ करने के लिए msvcrt.dll

+1

+1। यह पहले से ही हर विंडोज सिस्टम पर होने का एक चालाक साइड इफेक्ट है। MinGW के साथ बनाए गए कार्यक्रमों की आवश्यकता होती है, लेकिन इसे कभी वितरित नहीं करना पड़ता है। इसलिए, कोई कॉपीराइट समस्या नहीं है। – RBerteig

+1

यहां तक ​​कि यदि मैं कोड में किसी भी std c फ़ंक्शंस का उपयोग नहीं करता हूं, तो मुझे MSVCRT की आवश्यकता होती है जो मुझे सीआरटी स्टार्टअप/क्लीनअप कोड के लिए लगता है जो मुख्य से पहले/बाद में चलाया जाता है। न्यूलिब भी प्रदान करता है? – zaharpopov

-2

लिंक से नहीं जुड़ता है बनाने के लिए newlib (http://sourceware.org/newlib/) का उपयोग करने की कोशिश कर सकते हैं और आप libgcc_s_dw2-1.dll और libstdc++-6.dll

+0

स्पष्टीकरण के बिना इस तरह का उत्तर डाउनवॉटिंग वास्तव में सहायक नहीं है। कोई जवाब नहीं है कि यह जवाब दोषपूर्ण क्यों है। – JBentley

+1

जेनरेट बाइनरी निर्भरताओं से msvcrt.dll को हटाने का कोई कारण नहीं है? – paulm

+0

क्योंकि इसे अभी भी msvcrt.dll की आवश्यकता होगी – sherpya

0

की जरूरत नहीं होगी खोज थोड़ी देर के खर्च करने के बाद इसके लिए, मैं this post में प्रगति मिंगव 32 वैकल्पिक सी रनटाइम लाइब्रेरी प्रस्तुत किया। हालांकि, यह उपयोग के लिए तैयार नहीं है, और डेवलपर ने इसे छोड़ दिया है। Home page link here

इस उत्तर को यहां उम्मीद में पोस्ट करना कि यह भविष्य में किसी बिंदु पर लोगों के लिए उपयोगी हो जाएगा।