2012-12-28 39 views
20
Ben ayrı kaynak dosyadan hatta bir fonksiyonun en basit çağırmak çalıştığınızda bir hata alıyorum çünkü başlıklara sahip bir temel kavram eksik ve şunları içerir edilmelidir

:çözülmemiş dış semboller - Qt yaratıcısı

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

güverte .H

#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.cppBu bir hata sağlar. Ancak, işlev tanımını deck.cpp dosyasından main.cpp'nin altına taşırsam, uygulama oluşturulur.

Tüm dosyalar aynı projede bulunur ve aynı dizinde depolanır.

Diğer dosyalar:

.pro dosya

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 

emin İhtiyacınız, ama burada Makefile sizi zaman rejenere değildi gibi görünüyor

#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

Peki, derleme günlüğündeki çözümlenmemiş sembol nedir? – Archie

+0

main.obj: -1: hata: LNK2019: çözülmemiş harici sembol "void __cdecl buildDeck (int, int)" (? BuildDeck @@ YAXHH @ Z) işlevinde başvurulan _main – chuckieDub

+0

Sadece kodunuzu denediniz. Aldığım tek şey, kullanılmayan blackRed değişkeni hakkında bir uyarıdır. Bağlantı hatası yok. Yapıyı temizlemeyi deneyin ve qmake'yi tekrar çalıştırın. – Archie

cevap

59

mainwindow.h ise .pro dosyasını düzenledi. qmake'yi çalıştırın ve tekrar deneyin. Deck.cpp'nin derlenmiş olup olmadığını da kontrol edebilirsiniz; yapı dizininde bir güverte var mı?

+1

Sanırım bu da prolemanı çözecek. ama emin olmak için önce sadece temizlemeli. – UmNyobe

+0

teşekkürler, temiz ve qmake problemi çözdüm. – chuckieDub

+0

+1 @benjarobin, Kendi sınıfım için bir widget'ı tanıttıktan sonra, daha sonra tekrar tanıtım yaparak, tekrar çözülmemiş bir dış hataya devam ettim ve bundan kurtulamadım. VC++ arka planından geldiğimde, sadece temiz ve yeniden inşa edeceğini düşündüm ama hiç sevinç yok. Bu benim sorunumu çözdü. Çok teşekkürler. – Rich

İlgili konular