2009-09-28 12 views
7

QtCreator में कई अलग अलग परियोजनाओं के निर्माण करते समय, मैंने निम्नलिखित निर्माण त्रुटि के पार चला है लौटे:रिटर्न QtCreator निर्माण collect2: ld बाहर निकलें स्थिति 1

collect2: ld returned 1 exit status 

केवल कुछ चीजें बदल रहा है (कि कुछ भी महत्वपूर्ण परिवर्तन नहीं होना चाहिए के बाद निर्माण में), अगर यह पहले से ही दिखाई दे रहा है, तो यह दूर जाएगा, या अगर यह वहां नहीं होगा तो यह दिखाई देगा।

एक स्कूल परियोजना के लिए मेरे वर्तमान कार्यक्रम में, मैं rock03.cpp संकलित करने के लिए कोशिश कर रहा हूँ। यह निर्माण में एकमात्र फ़ाइल है, और इसमें मुख्य() विधि है। मैं सिर्फ यह सफलतापूर्वक चला था, और वापस चला गया कुछ if() रों का क्रम बदलने के लिए, अब, मैं केवल दो प्रासंगिक चेतावनी मिलती है:

overriding commands for target 'rock03.o' 

और

ignoring old commands for target 'rock03.o' 

प्रश्न में त्रुटि के साथ।

किसी को भी पता है क्यों यह होगा? मैं किसी भी उचित निश्चितता के साथ त्रुटि को पुन: उत्पन्न नहीं कर सकता, और QtCreator निर्माण करने से पहले किसी भी चीज के बारे में शिकायत नहीं कर रहा है।

धन्यवाद

+1

'collect2: ld 1 निकास स्थिति लौटा 'त्रुटि संदेश स्वयं नहीं है। यह सिर्फ एक नोट है कि लिंकर असफल रहा। क्या आप त्रुटि आउटपुट की पिछली लाइन पोस्ट कर सकते हैं? –

+0

त्रुटियों की कोई अन्य पंक्तियां नहीं हैं। यही सब है इसके लिए। –

+4

यदि आप "कंपाइल आउटपुट" बटन पर क्लिक करते हैं तो आपको लिंकर आउटपुट प्राप्त करना चाहिए, यह क्यूटी निर्माता में सामान्य बिल्ड त्रुटियों के आउटपुट में दिखाई नहीं देता है। –

उत्तर

-1

"आउटपुट संकलित" फलक जाँच हो रही है पता चलता है कि .pro फ़ाइल एक ही .cpp फ़ाइल में दो बार से जोड़ने के लिए कोशिश कर रहा था।

5

केवल संदेश त्रुटि यह एक विषय में लिंकर है, कारण यह है कि अपने कार्यक्रम अभी भी चल रहा है हो सकता है और लिंकर बाइनरी फ़ाइल के लिए उपयोग नहीं कर सकते। सुनिश्चित करें कि आपका आवेदन बंद हो गया है या फिर भी चल रहा है तो इसे मार डालो। क्यूटीक्रिएटर कभी जांच नहीं करता है कि पिछले रन को संकलित करने से पहले रोक दिया गया था।

2

संकलक उत्पादन करता है, तो आप सिर्फ एक त्रुटि के रूप में इस हो रही है वास्तव में उपयोगी है, लेकिन पहले उम्मीदवार शायद कि आप अभी भी उत्पादन कार्यक्रम खोल रखी है, है, और यह, फाइल करने के लिए नहीं लिख सकता, क्योंकि वह आपको

2

यह त्रुटि एक अकेला संग्रह 2 त्रुटि देगी जो इस त्रुटि को लिंकेज की समस्याओं के कारण भी हो सकती है, उदाहरण के लिए, आप 'बाहरी' निर्देश का उपयोग करके हेडर फ़ाइल से कुछ स्थिर चर घोषित करना भूल गए हैं।

0

वहाँ त्रुटि के लिए कई और अधिक कारण हो सकते हैं। लेकिन मेरे लिए, कक्षा से अप्रयुक्त SLOTS को हटाने पर समस्या हल हो गई थी।

1

यह तब होता है जब आप अपने मुख्य अनुप्रयोग बंद नहीं करते जब (ताकि उत्पादन निष्पादन अभी भी चल रहा है, लेकिन किसी भी दिखाई खिड़की के बिना)। एक उदाहरण: जब आप (कम से कम मेरे लिए) संवाद को बंद जब आप मुख्य विंडो को बंद

int main() { 
    QApplication a(argc, argv); 
    MainWindow w; 
    w.show(); 
    return a.exec(); 
} 

इस एप्लिकेशन को ठीक समाप्त हो जाती है, लेकिन इस कोड

int main() { 
    QApplication a(argc, argv); 
    QDialog w; 
    w.exec(); 
    return a.exec(); 
} 

ऐप को बंद नहीं करता है।

एक समाधान हमेशा आपकी मुख्य विंडो बनाना और सुनिश्चित करना है कि आप इसे बंद कर दें।

0

मुझे एक ही समस्या थी। मेरा संकल्प है - सभी आभासी कार्यों और सभी स्लॉट घोषणाओं को लागू करें।

5

यह मेरे साथ होता है क्योंकि मैं हेडर फ़ाइल में घोषणा करता हूं, फिर सीपीपी फ़ाइल में फ़ंक्शन हटा देता हूं और मैं हेडर में गिरावट को हटाना भूल जाता हूं। उदाहरण के लिए ...

//header file 
class CLASS : public Q_OBJECT 
{ 
... 
protected: 
void mouseMoveEvent(QMouseEvent*); 
} 

//source file 

void CLASS::mouseMoveEvent(QMouseEvent*e) 
{ 
... 
} 
    //I'll delete this, then forget to delete "void mouseMoveEvent(QMouseEvent*);" in the header file 
+0

सुपर कष्टप्रद बग। 30 मिनट के लिए इस त्रुटि को समझने की कोशिश कर रहा था। इसे नहीं मिला, और यह बिल्कुल ठीक था (एक ही समारोह और सब कुछ lol)। +++++++ – Toadums

1

मेरे मामले में यह स्पष्ट वर्चुअल फ़ंक्शन घोषित कर रहा था।

void virtual Func(MouseEvent*); // Error. 
void virtual Func(MouseEvent*) = 0; // Well! 
संबंधित मुद्दे