Jump to content
Sign in to follow this  
Gjakmarrja

MinGW, eksempel fra bok feiler, screenshot.

Recommended Posts

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

Share this post


Link to post

Joda... mye nyttig info der.

Lest om vanlig linker feil, fant jeg har gjort feil.

Men hvordan fikser jeg det da. ? :hmm::dontgetit:

 

Er seriøst skuffet over responsen her, dette var blæ.

Hvis det er standard hvorfor ikke bare gi meg svaret ?

Edited by chills

Share this post


Link to post

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

Edited by lnostdal

Share this post


Link to post

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

Share this post


Link to post

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.

Share this post


Link to post
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)

Edited by chills

Share this post


Link to post

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

Share this post


Link to post

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

Edited by kjetil7

Share this post


Link to post

Må på jobb, skal grave dypere i kveld/ved senere anledning. :cool:

 

Fikk ikke sett på det før nå.

Det stemmer, helt rett.

Tusen takk for hjelpen, funker nå.

 

:D

Edited by chills

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...