Gjakmarrja Skrevet 10. august 2006 Del Skrevet 10. august 2006 Hei! Har nettopp startet på -"You can program in C++" av Francis Glassborow. Det andre programmet i boken lyder som følger: #include "playpen.h" #include <iostream> int main(){ fgw::playpen blank; std::cout <<"Please press the `ENTER`key"; std::cin.get(); } Det er ikke noe "Return 1;" før slutten av funksjonen bare så det er nevnt. Den ser ut til å finne filen playpen, dette er altså en form for GUI lib som forfatter har ligget ved boken. Noen som vet hva jeg gjør feil? Takk for hjelpen. Lenke til kommentar
lnostdal Skrevet 10. august 2006 Del Skrevet 10. august 2006 en helt standard linkerfeil; les om det i denne: http://www.network-theory.co.uk/docs/gccintro/ Lenke til kommentar
Gjakmarrja Skrevet 10. august 2006 Forfatter Del Skrevet 10. august 2006 (endret) Joda... mye nyttig info der. Lest om vanlig linker feil, fant jeg har gjort feil. Men hvordan fikser jeg det da. ? Er seriøst skuffet over responsen her, dette var blæ. Hvis det er standard hvorfor ikke bare gi meg svaret ? Endret 10. august 2006 av chills Lenke til kommentar
lnostdal Skrevet 10. august 2006 Del Skrevet 10. august 2006 (endret) Nei, det fungerer ikke sånn fordi det er umulig for oss å vite hvor den manglende funksjons-definisjonen ligger hen. Du fikser det ved å linke inn de definisjonene linkeren leter etter, og den _forteller deg_ hva den leter etter; hva er problemet? edit: Det at du ikke har vett nok til å ta med hva du faktisk _gjør_, altså hvilke argumenter du gir kompileren/linkeren, gjør det ikke akkurat lettere å forklare, så jeg synes ikke du skal bli så overrasket. Dette er sikkert ikke din skyld. Du er vel født og oppvokst med Wintendo som 95% av alle andre, og det tar tid å justere om måten man tenker og kommuniserer på. Man ser resultatet av MS og disse VS-IDEene; en bedervet og i praksis totalt unyttig måte å kommunisere på uten forståelse for at det å inkludere sammenhenger i tekstform - det eneste riktige - er alfaomega for å kunne kommunisere. Dette er også mye av grunnen til at jeg forsøker å tvinge nybegynnere til å bruke kompiler/linker fra CLI; da det er lettere - for ikke å si mulig i det hele tatt - å få frem og kommunisere hva folk gjør og hva som skjer. De kan i stedet siden bytte til et IDE når de sitter inne med kunnskapen om hva som skjer på baksiden og har mulighet til å forstå hvorfor de må gjøre sånn-og-sånn og hvorfor sånn-og-sånn skjer. Da har har de muligheten til å kommunisere hva de gjør basert på det at de skjønner hva dette IDEet gjør på baksiden og kan poste en direkte kopi av disse detaljene her. Dette er ikke "umulig" å få til i sammenheng med et IDE heller, et enkelt og "gjennomsiktig" kall til scons med en editor som parser det GCC spytter ut er alt som trengs; jeg gidder i hvertfall ikke forklare at man skal klikke her-å-der som i en annen tråd her .. Edit2: Jeg kan ta et kjappt eksempel: Om du har en header-fil, fil1.hpp: void blah(); ..med en tilhørende definisjons-fil, fil1.cpp: void blah() { } ..og selve programfilen, main.cpp: #include "fil1.hpp" int main() { blah(); return 0; } ..så må du enten.. * Kompilere alle definisjonsfilene først, g++ -g -Wall -c main.cppg++ -g -Wall -c fil1.cpp ..for så å linke dem: g++ -o main fil1.o main.o ..og hadde du her glømt å ta med fil1.o ville du fått samme melding som i ditt eksempel; undefined reference * Eller så kan du kompilere _og_ linke, altså begge skrittene samtidig, slik: g++ -Wall -g fil1.cpp main.cpp -o main Håper dette hjelper (med forbehold om at dette er skrevet ned veldig kjappt). edit3: et par skrifeleivs Endret 11. august 2006 av lnostdal Lenke til kommentar
Gjakmarrja Skrevet 10. august 2006 Forfatter Del Skrevet 10. august 2006 --------------------Configuration: playpen - Debug-------------------- Linking... C:\MinGWStudio\Templates\playpen\Debug\emptyplaypen.o(.text+0x82): In function `main': C:\MinGWStudio\Templates\playpen\emptyplaypen.cpp:4: undefined reference to `studentgraphics::playpen::playpen(studentgraphics::hue)' C:\MinGWStudio\Templates\playpen\Debug\emptyplaypen.o(.text+0xcc):C:\MinGWStudio\Templates\playpen\emptyplaypen.cpp:6: undefined reference to `studentgraphics::playpen::~playpen()' C:\MinGWStudio\Templates\playpen\Debug\emptyplaypen.o(.text+0xf6):C:\MinGWStudio\Templates\playpen\emptyplaypen.cpp:6: undefined reference to `studentgraphics::playpen::~playpen()' playpen.exe - 3 error(s), 0 warning(s) Det er det jeg får feil... Lenke til kommentar
lnostdal Skrevet 10. august 2006 Del Skrevet 10. august 2006 Nei, det der er kun meldinger kompileren/linkeren spytter ut, chills. For å kompilere/linke må man kalle gcc eller g++ med visse argumenter - og det jeg forsøker å forklare deg er at dette kommer ikke frem i det hele tatt i noen av innleggene dine. Lenke til kommentar
Gjakmarrja Skrevet 10. august 2006 Forfatter Del Skrevet 10. august 2006 (endret) Nei, det der er kun meldinger kompileren/linkeren spytter ut, chills. For å kompilere/linke må man kalle gcc eller g++ med visse argumenter - og det jeg forsøker å forklare deg er at dette kommer ikke frem i det hele tatt i noen av innleggene dine. 6652247[/snapback] Jeg bruker et IDE, altså MinGW Devloper Studio... Så hvordan vet jeg hva som blir argumentene ? Leste over... Må man kompilere .h filer for å bruke de? LOL vent jeg leser det over... eksemplet.. så det ikke. Står ikke noe om dette i boka? Jeg har jo tatt med mappa i -other include directories" Btw jeg sitter på window maskin og g++ funker ikke fra cmd. Endre noe også nå får jeg bare denne feilen?: Linking...C:\MinGWStudio\MinGW\bin\..\lib\gcc-lib\mingw32\3.3.1\..\..\..\..\mingw32\bin\ld.exe: cannot find -lfgw playpen.exe - 1 error(s), 0 warning(s) Endret 10. august 2006 av chills Lenke til kommentar
lnostdal Skrevet 10. august 2006 Del Skrevet 10. august 2006 Jo; disse tingene er forklart i boka. include er en kompilerings-ting; du har problemer med linking - ikke kompilering. Da må du få g++ til å fungere fra cmd ved å legge til pathen til g++.exe og gcc.exe i environment-variablene til OSet ditt (sansynligvis c:\MinGW\bin); alternativet er å få IDE'et ditt til å vise hva det driver med ... altså åssen det kaller g++ og/eller gcc-programmene (kompilere og linkere er programmer som alt annet ..) på. Lenke til kommentar
kjetil7 Skrevet 11. august 2006 Del Skrevet 11. august 2006 (endret) Regner med at det er følgende bibliotek du jobber med: http://www.spellen.org/youcandoit/resources.htm I såfall må du legge til det forhåndsbyggede "gui-biblioteket" til linkeren din. Høyre-klikk på prosjektet ditt og velg "Settings". Der vil du finne en fane som heter "Link". Under "Libraries" kan du skrive inn hvilke biblioteker/filer du ønsker at linkeren skal hente symboler fra. Her kan du skrive inn "fgwlib.a" (som forutsetter at biblioteket er bygget fra før av og filbanen til den er gyldig). Edit: hvis du sliter med filbanene til *.a filene må du legge inn de under "Library files" og ikke "Include files". Endret 11. august 2006 av kjetil7 Lenke til kommentar
Gjakmarrja Skrevet 11. august 2006 Forfatter Del Skrevet 11. august 2006 (endret) Må på jobb, skal grave dypere i kveld/ved senere anledning. Fikk ikke sett på det før nå. Det stemmer, helt rett. Tusen takk for hjelpen, funker nå. Endret 12. august 2006 av chills Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå