28. august 2003 - 09:46Der er
38 kommentarer og 1 løsning
c++ begynder; hvordan laver jeg header fil??
Hej Jeg er begynder i c++ programmering, men ikke i programmering generelt. Jeg prøver at lære lidt c++.
Hvordan får jeg lavet min egen headerfil? Jeg laver et objekt-fil indeholdende nogle structs eller klasser. For at kunne inkludere den i mit "hoved" program skal jeg jo lave en headerfile... hvordan gør jeg det??
Mød TrackMan og Veo på Computerworld Cloud & AI Festival og hør, hvordan tech ændrer måden, vi træner og udvikler talent – fra skolebold til The Masters.
Øh, er det ikke noget med at i header filen skal man inkludere .o filen, samt lave prototyper til alle den's funktioner? eller er jeg helt ude i noget forkert her? *S* og så skal jeg vel bruge #include "fil" når den ligger i samme dir, og ikke i compiler-path'en ?
ok, arne_v, det fungerer med g++, men så bliver de jo compilet sammen til én binær fil... kan det ikke lade sig gøre at lave dem som .o + .h filer, og på den måde inkludere den?
Øh, det jeg gerne vil er at have mit program i nogle filer med tilhørende headerfiler, som jeg kan include i mit "main" program. Jeg troede at en headerfil havde en tilhørende objekt-fil, men det er måske ikke objektfiler som implementerer headerfilen's beskivelse?
ok, det er nok mig som er lidt langsom her, men det jeg gerne vil, er at lave en headerfil som jeg kan inkludere i min program. Header filer implementerer jo intet, men virker (så vidt jeg ved) mere som et interface til en binær fil. Hvordan laver og compiler jeg den binære fil, og tilhørende headerfil?
Hmm, okay... men det er det som jeg helst ikke vil ha... at den compiler dem sammen til en enkelt binær fil... altså jeg mener, jeg skal jo heller ikke compile stdio.o filen med når jeg bruger #include <stdio.h>...
Jeg er ikke klar over hvilken binær fil som indeholder funktionerne i stdio om det er en objektfil(.o), executabel(.a) eller sharedobjekt(.so) fil, men det er det jeg gerne vil opnå... at kunne include nogle funktioner fra en anden fil, uden at skulle compile dem sammen til én binær fil...
jeg vil altså gerne ha 3 filer: includable.(xx?) includable.h mainprog(.a)
includable skal så indeholde et antal funktioner og/eller klasser. Jeg kommer fra java-programmering, som jo kører helt konsekvent med denne opdeling i .class filer, hvor der ikke er headerfiler...
Hm, okay... det må jo være muligt at lave sine filer som nogle "includable" filer, det kan jo ikke passe at alle programmer er lavet i en kæmpe executable fil... Hvad er det jeg skal compile min includable om til? .a? det må jeg ikke når den ikke indeholder en main metode...
Når jeg så får compilet min includable om til whatever, hvad skriver jeg så i min header fil?
Linux eller gcc folkene har en stdio.c som de har compilet til stdio.o og gemt i libc.a (der er sikkert flere kilde tekst filer men lad os holde det simpelt).
Du kan ikke køre libc.a men du kan linke kodenmed ind i en eksekverbar fil.
Hvad du også gør.
g++ test.o inc.o -o test
henter kode fra en række .a filer (de er bare ikke angiver på kommando-linien).
Ja, men jeg vil IKKE ha dem i én fil, de skal ligge som to filer + en header fil... jeg skriver jo heller ikke: g++ test.o stdio.o -o test, altså jeg vil compiler jo (så vidt jeg ved?) ikke alle libraries med i mit lille program? Når jeg downloader et program/applikation så er der jo også mere en én fil med... f.eks apache ligger jo ikke i kun én fil... den er jo opbygget i en masse libraries, som den "henter/bruger" funktioner fra... I windows bruges dll-filer... når man skriver programmer i f.eks VB, så compiler man jo heller ikke hele dll-filen med i sit program.
forestil jer at jeg vil lave min egne libraries, f.eks min egen stdio library...
ok, men når jeg linker dem på den måde, så ligger hele den binære kode i én fil... jeg kan slætte alle andre filer end test(.a) filen, og stadig køre programmet, det gir jo ikke mening så? for programmer har jo ikke hver deres kopi af alle dll/obj filer?
jeg har kun lige skimmet på make kommandoen, og det er vist noget med at den kun compiler "nye" elementer, eller sådan noget...
Hvis laver en makefile der fortæller at: test afhænger af test.o og inc.o test.o afhænger af test.cpp og inc.h inc.o afhænger af inc.cpp så kan make selv generere de nødvendige build kommandoer afhængig af hvad der er eændret siden sidste build.
arne_v << okay, det er nok den jeg har ledt efter... men hvordan compiler jeg dem til shared objects, og skal headerfilen bare være magen til object filernes?
Så vidt jeg ved skal du enten have et .a med stub kode eller bruge dlopen/dlsym/dlclose til at loade den med.
Det er ikke særligt almindeligt at bruge .so til apps.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.