7

मैं वीएस -2010 (वीसी 100) का उपयोग करने के लिए पुराने समाधान को अपग्रेड करने का प्रयास कर रहा हूं।डीबग मोड में वीएस -2010 (वीसी 100) के साथ प्रीकंपील्ड हेडर का उपयोग करने का प्रयास करते समय मैं त्रुटि C2859 को कैसे हटा सकता हूं?

मेरे पास यह सेटअप है ताकि stdafx.cpp stdafx.h से precompiled header stdafx.pch बनाये। फिर अन्य सभी .cpp फ़ाइलें जिनमें stdafx.h शामिल हैं, को प्रीकंपील्ड हेडर का उपयोग करने का निर्देश दिया जाता है।

ये पोस्ट मुझे इस दूर होने में मदद मिली:

अब सब ठीक है जब मैं रिलीज़ मोड में निर्माण।

Error 1 error C2859: [removed]\debug\vc100.idb is not the idb file that was used when this precompiled header was created, recreate the precompiled header.

मुझे विश्वास है कि इस .idb फ़ाइल एक मध्यवर्ती डिबग दृश्य स्टूडियो द्वारा बनाई गई फ़ाइल है: लेकिन जब मैं कोशिश करते हैं और डिबग मोड में निर्माण मैं त्रुटियों की एक पूरी ढेर कह मिलता है।

मुझे यह त्रुटि क्यों मिल रही है? दूसरे शब्दों में यह इस .idb फ़ाइल का उपयोग क्यों नहीं किया जब यह प्रीकंपील्ड हेडर बनाया गया?

मुझे यकीन नहीं है कि आपको मुझे जवाब देने में सक्षम होने के लिए और कौन सी जानकारी चाहिए, इसलिए पूछें कि मुझे और जानकारी प्रदान करने की आवश्यकता है या नहीं।

उत्तर

4

एक सहयोगी के लिए धन्यवाद मुझे जवाब मिला।

समस्या यह थी कि stdafx.cpp में डीबग सूचना प्रारूप प्रोग्राम डेटाबेस (/ Zi) पर सेट किया गया था, जहां सभी अन्य फ़ाइलों ने इसे संपादित करने और जारी रखने के लिए प्रोग्राम डेटाबेस पर सेट किया था (/ ZI)।

उन्हें संपादित करने और जारी रखने के लिए प्रोग्राम डेटाबेस में सभी को बदलना (/ ZI) और पूर्ण पुनर्निर्माण करने से समस्या हल हो गई।

मुझे लगता है कि अपग्रेड इसे किसी भी तरह खराब कर देता है।

0

शायद आपके रिलीज बिल्ड को [हटाए गए] \ release \ vc100.idb के बजाय फ़ाइल [हटाए गए] \ debug \ vc100.idb लिखने के लिए कॉन्फ़िगर किया गया है? अपनी रिलीज बिल्ड के लिए प्रोजेक्ट सेटिंग्स जांचें और सुनिश्चित करें कि इस तरह के हार्डकोडेड पथ घटक नहीं हैं।

+0

एक रिलीज बिल्ड एक आईडीबी फ़ाइल उत्पन्न नहीं करता है क्योंकि यह केवल डिबगिंग के लिए है। इसलिए रिलीज बिल्ड क्यों काम करता है और डीबग नहीं करता है। – Steiny

+0

डिफ़ॉल्ट रूप से एक रिलीज बिल्ड एक आईडीबी फ़ाइल उत्पन्न नहीं करता है लेकिन ऐसा करने के लिए आप कॉन्फ़िगर कर सकते हैं (अधिकतर दुर्घटना से)। –

+0

धन्यवाद मैंने सोचा कि कठिन तरीके से बाहर निकलना। डीबग सूचना प्रारूप सेटिंग के साथ यह सब कुछ करना था। – Steiny

0

यहां बताया गया है मैं सिर्फ विजुअल स्टूडियो 2008 पर यह त्रुटि ठीक:

पृष्ठभूमि:

  • मैं एक समाधान है कि दो उप-परियोजनाओं शामिल है।
  • एक प्रोजेक्ट .dll संकलित करता है;
  • एक प्रोजेक्ट .exe को संकलित करता है जो इस .dll का उपयोग करता है;
  • .exe प्रोजेक्ट .dll प्रोजेक्ट पर निर्भर है;
  • समस्या: मैंने दोनों परियोजनाओं को एक ही निर्देशिका में अपने आउटपुट को डंप कर दिया था, यानी रूट में एक सामान्य निर्देशिका में लिखने के लिए "आउटपुट डायरेक्टरी" और "इंटरमीडिएट डायरेक्टरी" दोनों सेट किए गए हैं, "../$(कॉन्फ़िगरेशननाम"।त्रुटि के

कारण:

  • इस त्रुटि का कारण यह है कि जब .dll परियोजना संकलित किया गया है, यह के रूप में एक ही निर्देशिका में precompiled शीर्ष लेख (* .pch) बनाया गया। exe निर्देशिका, और जब .exe प्रोजेक्ट संकलित किया गया था, तो यह तुरंत .dll प्रोजेक्ट से precompiled शीर्षलेख (* .pch) को ओवरराइट करता है।

ठीक:

  • इसे ठीक करने के, मैं "IntermediateDirectory" दोनों उप-परियोजनाओं "अस्थायी" के लिए है, ताकि (precompiled शीर्ष लेख फ़ाइलों सहित) अस्थायी फ़ाइलों को लिखा गया था बदल विभिन्न निर्देशिकाएं।
1

stdafx.cpp के लिए प्रॉपर्टी पेज में डीबग सूचना प्रारूप के लिए अक्षम करें का चयन करें, फिर वापस जाएं और माता-पिता से इनहेरिट का चयन करें मेरे लिए काम किया।

1

जब एक परियोजना जहां $(ProjectName)अलग परियोजना की वास्तविक आउटपुट फ़ाइल से है संकलन मैं VS2005 के साथ इस त्रुटि पर पहुंच जाते हैं (यानी Linker > Output File कुछ और, जैसे $(OutDir)\$(ProjectName)-custom_postfix.exe$(OutDir)\$(ProjectName).exe के डिफ़ॉल्ट के लिए, लेकिन करने के लिए सेट नहीं है)

इस मामले में, और जाहिरा तौर पर केवल जब कर एक के पुनर्निर्माण-परियोजना केवल, vc80.pdb को गलत तरीके से देखा जा रहा है।

मुझे C/C++ > Output Files > Progam Database File Name से $(IntDir)\$(TargetName).pdb पर अतिरिक्त रूप से सेट करने में क्या मदद मिली। (डिफ़ॉल्ट vc80.pdb के बजाय)

+0

मेरे पास एक समान स्थिति थी (कस्टम नाम का उपयोग करके, ठीक काम कर रहा था, फिर अचानक इस त्रुटि का सामना करना पड़ा) लेकिन समाधान आउटपुट फ़ाइलों को मैन्युअल रूप से हटाने और पुनर्निर्माण के रूप में सरल था। – iX3

+0

@ iX3: .ddb फ़ाइल को हटाने से केवल तब तक मदद मिलती है जब तक आप समाधान को पुनर्निर्माण करने का प्रयास नहीं करते। फिर यह एक ही त्रुटि के साथ फिर से विफल हो जाएगा। मार्टिन बा द्वारा शुरुआती उत्तर ने मेरे लिए मुद्दा तय किया। – c00000fd

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

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