Bonjour à tous;
j'ai une classe déclarée dans un fichier tool.h, et implémentée dans tool.cpp.
Ma question serais comment faire de cette classe qu'un seul fichier précompilé en .HPP
Merci à vous .![]()
Bonjour à tous;
j'ai une classe déclarée dans un fichier tool.h, et implémentée dans tool.cpp.
Ma question serais comment faire de cette classe qu'un seul fichier précompilé en .HPP
Merci à vous .![]()
Je comprends pas totalement ta question, surtout dans ton treme firchier pré-compilé mais bon, je te dirai de faire ainsi :
fichier classe.h
fichier classe.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class TRappel { private : /* Ce qu'il te faut */ public : void Show(); };
Et ce qui donnerai en regroupant le tout :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void TRappel::Show () { Form->Show(); }
fichier classe.hpp
Si c'est ce que j'ai compris, sinon, bah dommage, en gros, tu mets directement ton code dans ta classe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class TRappel { private : /* Ce qu'il te faut */ public : void Show() { Form->Show(); } };
Non, mais merci qdmme,
je m'explique,
Une fois que la classe est inmplémentée (que ce soit en deux fichier .h et .cpp, ou dans un seul), je veux compilé pour avoir qu'un seul fichier .HPP sans code source de ma classe, par exemple :
la fonction FileExists(MonFichier) : permet de savoir si le fichier MonFichier exist bien. Cette fonction fait partie de SysUtils.hpp, si on veux voir son implémentation: on ouvre le fichier SysUtils.hpp, mais là on trouve que la déclaration.
Remarque :
Un fichier .HPP est un fichier pré-compilé, donc comment faire avec ma classe:
: l
![]()
Les fichiers .hpp sont des fichier entête tout comme les fichier .h
D'après tes explication je pense plutôt que ce sont des librairies que tu veux faire : fichier .lib
Site : http://chgi.developpez.com
Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)
Oui, Mais pour les fichiers .HPP on ne trouve pas d'autres fichier liés comment par exemple :
Tool.h
Tool.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class TRappel { private : /* Ce qu'il te faut */ public : void Show(); };
Mais dans un fichier .HPP on ne trouve que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void TRappel::Show () { Form->Show(); }
pas d'autre déclaration;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 void TRappel::Show () ;
entre-autre, pour les fichier .LIB, je m'intéresse, pouvez vous m'expliquez comment Linker, et surtout comment les utilisés.
Merci![]()
![]()
Pour reprendre ton exemple avec SysUtils.hpp, il existe dans le dossier c:\Program Files\Borland\CBuilder6\Source\vcl un fichier sysutils.pas qui contient une fonction FileExists.
Tu as donc bien un fichier hpp lié à un fichier source.
Moi j'ai compris la question comme ça: tu aimerais pouvoir distribuer tes classes sans montrer le code, comme dans certains fichiers fournis avec Borland.
Ma réponse est que tu dois compiler tes classes. A partir des fichiers .h et .cpp, tu vas obtenir un nouveau fichier .obj
Tu peux distribuer uniquement le ".h" (l'interface de la classe) et le ".obj" (le code compilé). Les destinataires peuvent ainsi utiliser la classe (puisqu'ils ont à la fois l'interface et le code compilé) pour les inclure dans un nouveau projet.
Est-ce juste?
PS: Je ne l'ai encore jamais fait... Corrigez-moi si je dis des bêtises
Très exacte. Merci, pour le truc c'est top génial.
Mais je revien pour la technique des .LIB, comment faire
Si j'ai bien compris, idem pour les .LIB,
je compile ma calsse,
je copie les deux fichiers .h et .lib dans le dossier du nouveau projet,
j'ajoute à mon nouveau projet le .Lib
je fais un #include<...>
et le tour est joué, n'es pas !!
MAIS LA, COMMENT COMPILER EN .LIB![]()
Merci à tous.
Si j'ai bien compris, les .lib servent à décrire les interfaces des dll.
On a l'équivalent des .h et .obj:
.h = interface d'une classe/groupe de fonctions
.obj = code compilé d'une classe/groupe de fonctions
.lib = interface de la librairie
.dll = code compilé de la librairie
Tu dois faire le include du fichier .lib pour pouvoir utiliser la librairie correspondante. Par contre, je ne pense pas que le code de la dll soit inclu dans ton build... (pas trop sûr de ce point)
Ces lib qui sont associée à des dll sont appelée librairies d'importation.Si j'ai bien compris, les .lib servent à décrire les interfaces des dll.
Mais on peut aussi faire des librairies static .lib qui contiennent le code et qui peuvent être liées à un projet.
L'interface dans les deux cas est dans les fichier entetes .h ou .hpp
Sous BCB on peut créer des librairies en faisant nouveau -> bibliothèque.
Site : http://chgi.developpez.com
Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)
Partager