2012-12-28 17 views
20

मैं हेडर के साथ एक बुनियादी अवधारणा याद आ रही किया जाना चाहिए और भी शामिल है क्योंकि जब मैं भी एक अलग स्रोत फ़ाइल से एक समारोह का सबसे सरल कॉल करने का प्रयास मैं कोई त्रुटि मिलती है:अनसुलझे बाह्य प्रतीक - क्यूटी निर्माता

main.obj:-1: error: LNK2019: unresolved external symbol "void __cdecl buildDeck(int,int)" ([email protected]@[email protected]) referenced in function _main

डेक ज

#ifndef DECK_H 
#define DECK_H 
#include <QString> 


void buildDeck(int deckSize, int jokers); 


struct card 
{ 
    QString suit; 
    QString color; 
    int rank; 
}; 

#endif // DECK_H 

deck.cpp

#include"mainwindow.h" 
#include "deck.h" 

void buildDeck(int deckSize, int jokers) 
{ 
    int blackRed = deckSize-=jokers; 
} 

main.cpp

#include "mainwindow.h" 
#include "deck.h" 
#include <QApplication> 
#include <QPushButton> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    w.show(); 

    buildDeck(10,20); 

    return a.exec(); 
} 

और यह मुझे एक त्रुटि देता है। हालांकि, अगर मैं फ़ंक्शन परिभाषा को de.c.cpp से main.cpp के नीचे ले जाता हूं, तो अनुप्रयोग निर्माण करेगा।

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

अन्य फ़ाइलें:

.pro फ़ाइल

QT  += core gui 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = carddeck 
TEMPLATE = app 


SOURCES += main.cpp\ 
     mainwindow.cpp \ 
    deck.cpp 

HEADERS += mainwindow.h \ 
    deck.h 

FORMS += mainwindow.ui 

नहीं सुनिश्चित करें कि आप इसकी आवश्यकता है, लेकिन यहाँ mainwindow.h

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QMainWindow> 
#include <QPushButton> 
#include <QTextEdit> 
#include <QCheckBox> 

namespace Ui { 
class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 

private slots: 
    void runButtonClicked(); 

private: 
    Ui::MainWindow *ui; 
    QPushButton *runButton; 
    QTextEdit * runText; 

    QCheckBox * betHearts; 
    QCheckBox * betDiamonds ; 
    QCheckBox * betClubs; 
    QCheckBox * betSpades ; 
    QCheckBox * betFlush ; 
    QCheckBox * betAllRed; 
    QCheckBox * betAllBlack ; 

}; 

#endif // MAINWINDOW_H 
+0

तो, आपके द्वारा प्राप्त संकलन लॉग से अनसुलझा प्रतीक क्या है? – Archie

+0

main.obj: -1: त्रुटि: एलएनके201 9: अनसुलझा बाहरी प्रतीक "शून्य __cdecl buildDeck (int, int)" (? BuildDeck @@ YAXHH @ Z) फ़ंक्शन _main – chuckieDub

+0

में संदर्भित बस आपके कोड को आजमाएं। एकमात्र चीज़ जो मुझे मिलती है वह अप्रयुक्त ब्लैक रेड वैरिएबल के बारे में चेतावनी है। कोई लिंकिंग त्रुटियां नहीं। निर्माण की सफाई करने और qmake फिर से शुरू करने का प्रयास करें। – Archie

उत्तर

59

ऐसा लगता है कि Makefile आप जब पुनर्जीवित नहीं किया गया था कि अगर .pro फ़ाइल संपादित किया। qmake चलाएं और पुनः प्रयास करें। आप यह भी जांच सकते हैं कि deck.cpp संकलित है या नहीं; क्या निर्माण निर्देशिका में एक डेक है?

+1

मुझे लगता है कि यह भी प्रस्ताव को हल करेगा। लेकिन उसे सुनिश्चित करने के लिए पहले साफ करने की जरूरत है। – UmNyobe

+0

धन्यवाद, स्वच्छ और qmake समस्या हल। – chuckieDub

+0

+1 @ बेंजरोबिन, अपनी खुद की कक्षा में एक विजेट को बढ़ावा देने के बाद, फिर इसे फिर से प्रचारित करने के बाद इसे फिर से वितरित करने के बाद, मुझे अनसुलझे बाहरी त्रुटि मिल रही थी और इससे छुटकारा नहीं मिल सका। वीसी ++ पृष्ठभूमि से आ रहा है मैंने सोचा कि सिर्फ एक साफ और पुनर्निर्माण ऐसा करेगा लेकिन कोई खुशी नहीं होगी। यह मेरी समस्या हल हो गई। बहुत धन्यवाद। – Rich

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