Votre #include
indique au compilateur où il peut trouver la définition de votre controller
classe (à savoir le contenu de votre fichier controller.h
).
Afin de lier vers l'implémentation de votre classe controller
, l'éditeur de liens requiert une bibliothèque qui contient l'implémentation déjà compilée. - Le projet Sub2
ne compile pas le contenu de Sub1
à nouveau, sauf si vous incluez les fichiers .cpp
de Sub1
dans votre projet Sub2
ce qui serait une mauvaise pratique et pourrait entraîner d'autres problèmes, cependant.
En supposant Sub1
est une bibliothèque qui sera générée comme sub1.lib
:
Vous devez ajouter les lignes suivantes à votre fichier .pro
de votre projet Sub2
:
LIBS += -L../Sub1 \
-lsub1
Ceci indique l'éditeur de liens qu'il existe un répertoire "../Sub1" qui contient des bibliothèques et qu'il existe une bibliothèque appelée "sub1.lib". L'avantage d'utiliser la syntaxe -L
et -l
est que cela fonctionne sur toutes les plateformes (Windows, Linux, Mac, etc.).
Si les deux Sub1
et Sub2
sont executables (à savoir les projets produire un .exe
) fichier, vous devez extraire le contenu commun dans un projet distinct Sub3
qui a TEMPLATE = lib
au lieu de TEMPLATE = app
dans son fichier .pro
.