2011-12-02 7 views
5

एक साफ के साथ एक नया विंडोज 7 कंप्यूटर पर इंस्टॉल किया था:LNK4099 लिंकर स्वच्छ साथ चेतावनी क्यूटी SDK और विज़ुअल सी की स्थापित ++ 2008

  • विजुअल स्टूडियो 2008 SP1
  • क्यूटी एसडीके 1.1.4

फिर मैंने क्यूटी निर्माता में एक नई परियोजना बनाई। मैंने "क्यूटी विजेट प्रोजेक्ट" के तहत "क्यूटी गुई एप्लिकेशन" चुना और इसे विजुअल सी ++ 2008 के साथ डेस्कटॉप पर लक्षित किया, दोनों डीबग & रिलीज (मूल रूप से डिफ़ॉल्ट सेटिंग्स)।

तब मैं बिल्ड दबाया, और मिल गया ....

qtmaind.lib(qtmain_win.obj):-1: warning: LNK4099: PDB 'vc90.pdb' was not 
found with 'c:\QtSDK\Desktop\Qt\4.7.4\msvc2008\lib\qtmaind.lib' or at 
'C:\Users\JamesJ\Desktop\QtTest-build-desktop-Qt_4_7_4_for_Desktop_- 
_MSVC2008__Qt_SDK__Debug\debug\vc90.pdb'; linking object as if no debug info 

मैं स्पष्ट कुछ याद आ रही किया जाना चाहिए - निश्चित रूप से क्यूटी साथ बाहर के बॉक्स अनुभव संकलक/लिंकर चेतावनी को शामिल करने वाला नहीं है? !?!

मैं इस लिंकर चेतावनी को कैसे हल करूं? मैं चेतावनियों को त्रुटियों के रूप में समझना पसंद करता हूं, इसलिए ... मैं इसे ठीक करना चाहता हूं।

उत्तर

0

इस के लिए कोई समाधान नहीं मिल सका। मुझे यकीन है कि क्यूटी का पुनर्मूल्यांकन इस मुद्दे को हल करेगा, लेकिन सादगी के लिए मैं अब के लिए एसडीके के साथ स्थापित करना चाहता हूं।

3

का पथ qtmain_win.obj में एम्बेड किया गया वही पथ नहीं है जो आपके लिंकर सेटिंग्स में सेट है।

निर्देशों के अनुसार this article में:

लिंकर सेटिंग्स में, Properties->Linker->Debugging->Generate Program Database File मूल्य $(TargetDir)$(TargetName).pdb है।

C/C++ सेटिंग्स में, Properties->C/C++->Output Files->Program Database Fileभी$(TargetDir)$(TargetName).pdb सेट किया जाना चाहिए (उसके डिफ़ॉल्ट मान $(IntDir)\vc90.pdb है)।

विफल होने पर, आप डीबग बिल्ड की सफाई और पुनर्निर्माण करने का प्रयास कर सकते हैं।

+2

मैं क्यूटी निर्माता का उपयोग कर रहा हूं, दृश्य सी ++ नहीं। मैं इन सेटिंग्स को क्यूटी निर्माता में कैसे सेट करूं? –

+0

Win32-msvc2008 के लिए 'qmakeE_conf' में 'QMAKE_CFLAGS_RELEASE =/Z7'' सेट करके आप '.pdb' फ़ाइलों के उपयोग को अक्षम कर सकते हैं (मुझे विश्वास नहीं है कि Qt निर्माता उनका उपयोग कर सकते हैं)। यह '.obj' फ़ाइलों में सभी डीबगिंग जानकारी एम्बेड करता है। यदि आपको '.pdb' फ़ाइलों का उपयोग करने की आवश्यकता है, तो सुनिश्चित करें कि 'qmake.conf' स्थापित है [इस तरह] (http://developer.qt.nokia.com/faq/answer/how_to_build_pdb_for_release_version_of_qt) – Gnawme

+0

क्या आप पुन: संकलित करने का सुझाव दे रहे हैं क्यूटी? क्यूटी एसडीके में नोकिया द्वारा प्रदान की जाने वाली आउट-ऑफ-द-बॉक्स बाइनरी के साथ यह ठीक से काम करने का कोई तरीका नहीं है? –

0

अपने .pro फाइल करने के लिए

QMAKE_LFLAGS += /ignore:4099

जोड़ें।

आप अपने निष्पादनयोग्य या लायब्रेरी के लिए फ़ाइलों .pdb बनाना चाहते हैं जोड़ने

QMAKE_CXXFLAGS += /Z7

तो डिबग जानकारी .obj फाइलों में डाल देंगे।

बिल्डिंग नियमों को अपडेट करने के लिए आपको शायद सभी मेकफ़ाइल * को हटाने की आवश्यकता है। एमएसवीसी 2008 एसपी 1

+0

-1 लिंकर चेतावनियों को अक्षम करने से समस्या हल नहीं होती है। समाधान सरल है: vc90.pdb फ़ाइल को कॉपी करें जो स्थिर लाइब्रेरी qtmaind.lib को उसी निर्देशिका में बनाते समय जेनरेट किया गया था जहां qtmaind.lib रहता है। – IInspectable

1

अलग-अलग क्यूटी लाइब्रेरी (4.8.2) और क्यूटी निर्माता (2.5.2) को अलग-अलग स्थापित करने के साथ क्यूटी निर्माता 2.4.1 में परीक्षण किया गया। मुझे अब एलएनके 40 99 चेतावनी नहीं मिली है।

सेटिंग्स क्यूटीएसडीके पत्तियों को पीछे हटाना सुनिश्चित करें: KHCU\Software\Nokia और %APPDATA%\Nokia फ़ोल्डर में कुंजी।

QTSDK पैकेज प्रबंधक के भीतर मैन्युअल रूप से QT लाइब्रेरी को अपग्रेड करना भी काम कर सकता है।

0

ऐसा तब होता है जब आप क्यूटी निर्देशिकाओं (यानी libs/pdbs वाले वाले) को संकलन के बाद एक अलग निर्देशिका में ले जाते हैं। पीडीबी फ़ाइल का मार्ग पुस्तकालयों में एम्बेडेड है, इसलिए जब आप उन्हें ले जाते हैं तो लिंकर इसे नहीं ढूंढ सकता है।

मेरे लिए लगता है कि सुरक्षित/साफ-सुथरा मुद्दा नए स्थान पर क्यूटी का पुनर्निर्माण करना है।

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