2013-01-10 13 views
8

में लाइब्रेरियन के साथ .pdb फ़ाइलों को शामिल करना मेरे पास एक प्रोजेक्ट है जिसका आउटपुट लाइब्रेरी (.lib) है। परियोजना किसी तृतीय पक्ष लाइब्रेरी (एक .lib) पर निर्भर करती है। इस तीसरी पार्टी निर्भरता के बारे में चिंता करने के लिए मेरी लाइब्रेरी के शीर्ष पर बनाई गई परियोजनाओं से बचने के लिए, मैंने लाइब्रेरियन का उपयोग इसे (परियोजना गुण> लाइब्रेरियन> सामान्य> अतिरिक्त निर्भरता) में शामिल करने के लिए किया है।विजुअल स्टूडियो

MyProject.lib (someThirdPartyObjectFile.obj): चेतावनी LNK4099:

हालांकि, जब मैं एक अलग निष्पादन योग्य परियोजना जो मेरे पुस्तकालय के लिए लिंक का निर्माण, मैं की तर्ज पर चेतावनी का एक समूह मिल PDB ' vc110.pdb '' MyProject.lib (someThirdPartyObjectFile.obj) 'या' \ vc110.pdb 'पर नहीं मिला था; ऑब्जेक्ट को लिंक करना जैसे कि कोई डीबग जानकारी

इसका मतलब है (मुझे लगता है) कि मैं अपनी लाइब्रेरी से संबंधित किसी भी कोड को डीबग करने में सक्षम हूं, लेकिन तीसरे पक्ष की लाइब्रेरी में नहीं।

मैं विजुअल स्टूडियो को तीसरे पक्ष की लाइब्रेरी के पीडीबी की सामग्री को भी शामिल करने के लिए कैसे निर्देश दे सकता हूं?

+0

तुम अब भी 'बिना pdb' फ़ाइल डीबग कर सकते हैं, लेकिन यह (डिबग जानकारी के बिना होगा समारोह के नाम, आदि...)। मेरे पास यह चेतावनी एक बार थी, लेकिन यह बिना किसी परिणाम के था (और मुझे याद नहीं है कि मैंने इसे कैसे तय किया)। हालांकि, वीएस 2008 के साथ था। हो सकता है कि आप यह देखने के लिए कि डीबग जानकारी वास्तव में उपयोग की जाती है, बनाने और डिबग करने का प्रयास कर सकते हैं। अंतिम: स्थैतिक या गतिशील lib? – Synxis

+1

@ सिन्क्सिस स्टेटिक लिब। – JBentley

+0

@ सिंक्सिस का इरादा है, मुझे अभी तक प्रस्तावित समाधानों का प्रयास करने का मौका नहीं मिला है। मैं जल्द ही ऐसा करूंगा। – JBentley

उत्तर

6

स्थिर पुस्तकालय शायद स्थानांतरित हो गया है, इसलिए संकलक इसे से प्रतीकों को नहीं ढूंढ सकता है। /Z7 को

  • परिवर्तन डिबगिंग प्रारूप है, जो कोड में डिबग जानकारी एम्बेड करता है (जबकि /Zi और /ZI एक अलग फाइल में रख): आप कई विकल्प हैं।
  • पीडीबी फ़ाइल के आउटपुट कॉन्फ़िगरेशन को बदलें (VS2005 के लिए यह Settings > C++ > Output Files > Program Database File Name था, शायद वीएस -2010 में समान)।

आप अधिक जानकारी here और here पा सकते हैं।

+3

धन्यवाद, मैंने इस समस्या का पुनरीक्षण किया और आपके उत्तर से यह पता चला कि समस्या क्या है। डिफ़ॉल्ट रूप से विजुअल स्टूडियो आउटपुट फ़ोल्डर की बजाय इंटरमीडिएट फ़ोल्डर में पीडीबी फ़ाइल रखता है, और इसलिए जब मैं उससे लिंक कर रहा था तो मेरी तीसरी पार्टी लाइब्रेरी का पीडीबी नहीं मिला। '$ (IntDir) vc $ (PlatformToolsetVersion) .pdb' से' $ (OutDir) vc $ (PlatformToolsetVersion) .pdb' से उल्लिखित सेटिंग को बदलना सुनिश्चित करता है कि पीडीबी को उसी फ़ोल्डर में .lib आउटपुट के रूप में रखा गया है। मुझे नहीं पता कि विजुअल स्टूडियो इस पर डिफ़ॉल्ट क्यों नहीं है, क्योंकि पीडीबी को इंटरमीडिएट फ़ोल्डर में रखने से मुझे कोई समझ नहीं आता है। – JBentley

0

संपत्ति पेज (Alt + F7) लिंकर, सभी विकल्प पर जाएं, डीबग जानकारी नहीं स्थिति में सेट उत्पन्न

+0

क्यों? इसके अलावा, क्या इसका नकारात्मक दुष्प्रभाव हो सकता है? – anatolyg

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