2010-01-15 14 views
12

के लिए अलग EXE फ़ाइल उत्पन्न करता है मेरी टीम और मैं एक वीसी ++ 6 प्रोजेक्ट विकसित कर रहा हूं। हम सभी एक ही कोड-बेस (संस्करण नियंत्रण प्रणाली का उपयोग कर) का उपयोग कर रहे हैं, और हमारे सभी कंपाइलर/लिंकर/पर्यावरण-सेटिंग्स (निर्देशिका निर्देशिका शामिल सहित), जहां तक ​​हम कह सकते हैं, बिल्कुल वही हैं। बेशक हम एक ही सेवा पैक (वीसी 6 एसपी 6) के साथ एक ही वीसी ++ संस्करण का उपयोग कर रहे हैं।एक ही प्रोजेक्ट का निर्माण क्यों प्रत्येक डेवलपर

समस्या यह है कि EXE कि हम में से प्रत्येक का निर्माण थोड़ा अलग है।

मुझे पता है कि हर बार जब आप एक ही कंप्यूटर पर EXE बनाते हैं, तो फ़ाइल में 3 स्थान होते हैं जहां लिंकर टाइम-स्टैंप संग्रहीत करता है। मैं इन मतभेदों के बारे में बात नहीं कर रहा हूं।

हालांकि हमारी EXE फ़ाइलें बिल्कुल वही लंबाई हैं, जब हम EXEs की तुलना करते हैं, 1000 बाइट्स अलग-अलग होते हैं। उनमें से कई बाइट 0x20 से मूल्य में भिन्न हैं।

कोई विचार क्या कारण हो सकता है?

संपादित करें: डीबग बिल्ड (दरअसल, हमने रिलीज की जांच नहीं की थी)।

संपादित करें: अंतर बाइनरी अनुभागों में हैं, टेक्स्ट-स्ट्रिंग में नहीं।

संपादित करें: सभी डेवलपर स्रोत और उत्पादों के लिए एक ही ड्राइव/फ़ोल्डर नाम का उपयोग कर रहे हैं।

+0

मुझे लगता है कि आप रिलीज संस्करण के बारे में पूछ रहे हैं, है ना? –

उत्तर

5

यदि Debug संस्करण में "लिंक वृद्धिशील रूप से" चेक किया गया विकल्प है, तो शायद यह diffs का कारण है।

+0

क्या आप विस्तृत कर सकते हैं? –

+2

यह सिर्फ एक अनुमान है। हर बार जब आप प्रोजेक्ट बनाते हैं तो बढ़ती लिंकिंग कुछ डीबग जानकारी जोड़ती है। यह एक * साफ * exe नहीं बनाता है। –

+0

मैं इसे रविवार को देखूंगा। धन्यवाद। –

0

बस एक अनुमान: स्ट्रिंग्स या स्ट्रिंग गुणों के अनियमित हिस्सों को एक निश्चित लंबाई के जहां 1 0 अंत में नहीं है?

4

चूंकि 0x20 ऊपरी और निचले मामले ASCII वर्णों के बीच अंतर है, तो मुझे आश्चर्य है कि क्या ये अंतर फ़ाइल पथों में होते हैं जो बाइनरी में संकलक/लिंकर एम्बेड करते हैं (संभवतया संदेशों को जोर देते हैं?)। क्या आपके देव पेड़ अलग-अलग हो सकते हैं ("सी: \ DevTrees \ MyProject \ SuperFoo" एक बॉक्स पर और "E: \ work \ projects \ superfoo" किसी अन्य पर?)।

1

यह संयोग हो सकता है, लेकिन 0x20 निम्न-मामले और ऊपरी-मामले ASCII वर्णों (जैसे 'ए' == 65 == 0x41, 'a' ==97 = 0x61) के मानों के बीच अंतर है।

3

मैं निक डीडी के साथ सहमत हूं। डीबग के दौरान, वृद्धिशील लिंकिंग है जिस पर एक्सई को स्क्रैच से पुनर्निर्माण नहीं किया जाता है, लेकिन प्रत्येक बिल्ड के लिए यहां और वहां कोड को जोड़ता/हटाता है।

आईई। exe का लेआउट पहले से प्रत्येक संकलन पर निर्भर करता है।

एक स्वच्छ निर्माण को समान कंपेलरों पर समान परिणाम देना चाहिए।

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