Ich muss ein Grundkonzept mit Header fehlt und schließt, denn wenn ich selbst die einfachsten einer Funktion aus einer separaten Quelldatei ich einen Fehler zu nennen versuchen:Ungelöste externe Symbole - Qt Creator
main.obj:-1: error: LNK2019: unresolved external symbol "void __cdecl buildDeck(int,int)" ([email protected]@[email protected]) referenced in function _main
Deck .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.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();
}
Und das gibt mir einen Fehler. Wenn ich jedoch die Funktionsdefinition von deck.cpp an den unteren Rand von main.cpp verschiebe, wird die Anwendung erstellt.
Alle Dateien sind im selben Projekt enthalten und werden im selben Verzeichnis gespeichert.
Andere Dateien:
.proDatei
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
nicht sicher, ob Sie es brauchen, aber hier ist 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
Also, was ist das ungelöste Symbol aus dem Kompilierungsprotokoll, das Sie bekommen? – Archie
main.obj: -1: Fehler: LNK2019: nicht aufgelöstes externes Symbol "void __cdecl buildDeck (int, int)" (? BuildDeck @@ YAXHH @ Z) in Funktion _main referenziert – chuckieDub
Probieren Sie Ihren Code aus. Das einzige, was ich bekomme, ist eine Warnung über ungenutzte blackRed Variable. Keine Verknüpfungsfehler Versuchen Sie, den Build zu säubern und qmake erneut auszuführen. – Archie