Gå til innhold

MinGW, eksempel fra bok feiler, screenshot.


Anbefalte innlegg

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. :)

 

post-76920-1155233045_thumb.jpg

Lenke til kommentar
Videoannonse
Annonse

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.cpp

g++ -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 av lnostdal
Lenke til kommentar

--------------------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
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 ? :dontgetit::dontgetit:

 

Leste over...

Må man kompilere .h filer for å bruke de? :dontgetit:

 

LOL vent jeg leser det over... eksemplet.. så det ikke. :blush:

 

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 av chills
Lenke til kommentar

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

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 av kjetil7
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...