Bonjour.
Désolé pour le titre pourri, mais franchement je vois difficilement comment résumer ça.
Je m'explique :
Sous VC++2007, j'ai deux projet dans ma solution (ils compilent donc en même temps) qui ont des fichiers de classes en commun. Je voudrais que certaines méthodes de ces classes soient compilées par un projet mais pas par l'autre.
Donc en gros, voici ce que je fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 // Fichier mainApp.h, appartenant uniquement au projet 1 ... #define IS_MAIN_APPLICATION ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 // Fichier maclasse.h classe Maclasse{ public: void methode_en_commun(); #ifdef IS_MAIN_APPLICATION void methode_que_seul_projet1_devrait_posseder(); #endif }Le projet 2 ne compilant pas le fichier mainApp.h, pour lui tout se passe bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 // Fichier maclasse.cpp #include maclase.h void Maclasse::methode_en_commun(){...} #ifdef IS_MAIN_APPLICATION void Maclasse::methode_que_seul_projet1_devrait_posseder(){...} #endif
Par contre, le projet 1 compile la déclaration de methode_que_seul_projet1_devrait_posseder() dans maclasse.h, mais il saute l'implémentation de cette fonction dans maclasse.cpp
=> Du coup ça me fait une erreur de link (lnk 2019).
Vous avez une idée ?
Merci d'avance.
Martin
Partager