Il me manque un concept de base avec en-têtes et éléments inclus car lorsque j'essaie d'appeler la fonction la plus simple à partir d'un fichier source séparé, une erreur se produit:
main.obj: -1: erreur: LNK2019: symbole externe non résolu "void __cdecl buildDeck (int, int)" (? buildDeck @@ YAXHH @ Z) référencé dans la fonction _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();
}
Et cela me donne une erreur. Cependant, si je déplace la définition de la fonction de deck.cpp vers le bas de main.cpp, l’application se créera.
Tous les fichiers sont inclus dans le même projet et stockés dans le même répertoire.
Autres fichiers:
.profil
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
je ne sais pas si vous en avez besoin, mais voici 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
Il semble que le fichier Make n'a pas été régénéré lorsque vous avez modifié le fichier .pro . Exécutez qmake et essayez à nouveau . Vous pouvez également vérifier si le fichier deck.cpp est compilé ou non; y a-t-il un deck.o dans le répertoire de construction?
oui, le fichier Makefile n’est pas mis à jour pendant le changement de fichier .pro. Donc, vous devez exécuter qmake.
Suivez ces étapes:
Conseils Pro:
Je ne sais pas mais parfois Qt ne met pas à jour Makefile. donc je le recommande à tous chaque fois que vous ajoutez/supprimez une ressource dans un projet ou si des modifications se produisent dans votre fichier .pro, exécutez simplement qmake et construisez votre projet (Exécuter qmake manuellement pour mettre à jour le chemin du projet, ce qui aide à trouver la fenêtre principale. fichier .obj).