min egen #include fil?

Tags:    c++

Hej jeg har lavet nogle klasser og nogle tilhørende metoder/member functions, jeg har arrangeret dem som følger:
minKlasse.h
minKlasse.cpp

.cpp filen starter så med #include "minKlasse.h"
Det virker altsammen meget godt, men jeg er træt af at jeg ska kompilere alle filerne hver gang jeg ska bruge dem.
Jeg kunne godt tænke mig hvis jeg havde en mineKlasser.h fil som jeg kunne bruge i stedet.

Skal jeg lave en .dll, .lib eller .a fil, og hvordan gør man det?
Jeg bruger dev-cpp i WinXP




8 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Er dit projekt meget stort?

Hvis jeg havde en masse filer, som mange senere kunne bruge til diverse ting, funktioner, klasser osv. Ville jeg lave en fil, med navnet på projektet, el. lign.

Et eksempel ville være hvis man laver en masse matematikrelaterede funktioner, klasser, osv., at man så kalder den, jlmath.hpp. Filen kunne så se således ud
Fold kodeboks ind/udKode 

Dette er på samme måde som så meget andet, f.eks. windows-headeren til Win32 programmering, den indeholder i sig selv ikke noget kode, men kun en masse #define's og #include's.

Hvis du dog stadig ønsker at lave en .a eller .lib-fil, så er vi nået til et punkt, hvor jeg desværre ikke kan følge med længere. Jeg har aldrig prøvet at arbejde med dette på denne måde, så har ingen erfaring.



Indlæg senest redigeret d. 10.04.2007 17:09 af Bruger #8422
Ved evt. at lave en makefil (make, nmake, ...) vil du slippe for at alle filerne bliver kompileret igen og igen. Her vil der blive tjekket hver gang, og kun de filer der er ændret vil blive kompileret forfra.
Jeg tror desværre ikke du kan lave så meget om i Dev-C++, men du kunne jo evt. bare bruge Dev-C++ som IDE, og selv kompilere, med brug af makefiles. Bruger selv den sidste løsning ofte, specielt på langsomme computere.



Det lyder ik så dumt! Men Jeg kunne også godt tænke mig at gøre det lidt brugervenligt, da jeg har lavet klasserne til andre ligeså meget som jeg har lavet dem til mig selv.
Kan jeg lave én header fil som ordner det hele, så følgende kode ville være nok til at bruge klasserne?
Fold kodeboks ind/udKode 

Og måske noget med at linke til et dll?
Tak for det hurtige svar :)



Indlæg senest redigeret d. 10.04.2007 13:47 af Bruger #6465
Jeg er ikke helt med på hvad det er du mener?

Generelt tror jeg ikke at der er nogen problemer i bare at udgive koden som den er, og så evt. give en makefile med, hvis du tænker på open source, eller noget i den dur.
At linke, og bruge en .DLL fil ville være stærkt unødvendigt, men det kommer selvfølgelig an på dit projekt.

Jeg kan se at du snakker noget om en header fil, men normalt plejer man ikke, så vidt jeg ved, at implementere og initialisere objekter, variabler, you name it, i .H(PP)-filer. Alt dette gøres i .C(PP)-filer, og selve deklarationen, og definitionerne bliver gjort i .H(PP)-filerne.

Jeg forstår dit problem... men er det egentligt så slemt?
Jeg har ofte siddet med de der 20-40 filer i et projekt, med Dev-C++ som IDE, og jeg synes ærligt talt ikke at det tager så langt tid at kompilere med GCC. Men jeg vil stadig sige at du skal kigge lidt på nogle makefiler. Så kan du også mærke hvordan det egentligt er selv at kompilere, linke og evt. assemble filer + at det som sagt går hurtigere.



Jeg har leget lidt med en grafik engine(irrlicht) og en fysik engine(newton) og når jeg ska bruge dem, linker jeg bare til en .a fil eller en .lib fil, kopierer dll filerne til projektets bibliotek og så kan jeg nøjes med at starte mine filer med:
#include "irrlicht.h"
#include "newton.h"

og så er jeg kørende.
Jeg tænkte bare om jeg ikke kunne lave noget tilsvarende med mit projekt.



Nej mit projekt er ikke særligt stort og det er da sikkert også overkill at lave lib filer, det fik mig bare til at føle mig lidt vigtig :)

Du ska ha mange tak for hjælpen, jeg tror de der makefiler er hvad jeg har brug for.



Hvis du har mange filer, der skal bruges i flere projekter kan du med fordel lave en lib fil, hvis filerne ændrer sig sjældent.
Er der rigtigt mange filer kan du med fordel lave en dll og linke til den med en lib-fil.
Men ellers er det klart lettere at inkludere filerne direkte.



Det lyder ik så dumt! Men Jeg kunne også godt tænke mig at gøre det lidt brugervenligt, da jeg har lavet klasserne til andre ligeså meget som jeg har lavet dem til mig selv.
Kan jeg lave én header fil som ordner det hele, så følgende kode ville være nok til at bruge klasserne?
Fold kodeboks ind/udKode 

Og måske noget med at linke til et dll?
Tak for det hurtige svar :)


Du skal gøre som Bertel skriver ved at lave en .dll eller en .lib fil.

Når du laver en Dll, så skal du være opmærksom på at du kan / skal lave eksportere dine funktioner og klasser. Når en funktion eller klasse er eksporteret, så betyder det at den bliver i eksekveret i din dll, hvilket er et krav da det er der implmentationen befinder sig. (se nedenstående kodesnippet)

Fold kodeboks ind/udKode 


DLL filen skal placeres i din PATH og stien til LIB filen og header filerne, skal sættes op i din compiler (include- og link libraries). Det eneste du herefter skal frigive til dem, der skal bruge dit API, det er dine header filer, lib- og dll fil.

Hth




Indlæg senest redigeret d. 10.04.2007 22:36 af Bruger #10448
t