Avatar billede zypher212 Nybegynder
02. juni 2005 - 21:50 Der er 27 kommentarer og
1 løsning

Compile error!

Jeg har hentet compileren Dev-C++, og har hentet nogle program stykker fra en bog om C++. (Grundlæggende programmering i C++, af Henrik Tange).
Har dog problemer med at compilere de programmer.
Hvorfor kan jeg ikke compile det her??:
Auto.cpp:
#include"Auto.h"

void Auto::registrerAuto(int sernum)


    m_nSerienummer = sernum;

}

int  Auto::getRegNo()

    return m_nSerienummer;

}

Auto.h:

class Auto
{

  private:
  int m_nSerienummer;

  public:

  void registrerAuto(int sernum);

  int getRegNo();

};

Er der fejl i koden, eller er det min compiler der er for gammel??

På forhånd tak :)

P.S. Dev-C++ skriver i loggen:
Kompiler: Default compiler
Eksekverer  g++.exe...
g++.exe "C:\Documents and Settings\Benjamin  Krogh\Skrivebord\kap1\Auto.cpp" -o "C:\Documents and Settings\Benjamin  Krogh\Skrivebord\kap1\Auto.exe"    -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include"  -I"C:\Dev-Cpp\include\c++\3.4.2\backward"  -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32"  -I"C:\Dev-Cpp\include\c++\3.4.2"  -I"C:\Dev-Cpp\include"  -L"C:\Dev-Cpp\lib"
C:\Dev-Cpp\lib/libmingw32.a(main.o)(.text+0x106):main.c: undefined reference to `WinMain@16'
collect2: ld returned 1 exit status

Eksekvering afbrudt
Avatar billede arne_v Ekspert
02. juni 2005 - 21:53 #1
Du kan også godt compile det.

Men du kan ikke linke det da din kode ikke har en WinMain (det skal Windows
GUI applikationer have).
Avatar billede zypher212 Nybegynder
02. juni 2005 - 22:06 #2
Jeg er nybegynder og aner ikke hvad du mener med at linke det... :S

Hvordan undgår jeg at linke skidtet???
Avatar billede zypher212 Nybegynder
02. juni 2005 - 22:10 #3
Jeg har prøvet at starte nyt projekt, og lave et nyt projekt, og valgt ms-dos applikation. Fatter bare ikke hvorfor den returnerer: "undefined reference to winmain@16" ???
Avatar billede arne_v Ekspert
02. juni 2005 - 22:15 #4
en console applikation skal have en main funktion

en Windows GUI applikation skal have en WinMain funktion

det er den funktion som kaldes når programmet starter op

hvis du er nybegynder så skal du bare acceptere at sådan er det

alle programmer skal linkes inden de kan køres
Avatar billede zypher212 Nybegynder
02. juni 2005 - 22:52 #5
Hvor i min kode skal jeg så ændre for at jeg kan kompilere den???

Det med en main funktion ved jeg godt, men så først lige at den manglede nu :)
Avatar billede arne_v Ekspert
02. juni 2005 - 23:00 #6
du kan sætte din main ind i Auto.cpp eller lave en seperat Main.cpp
Avatar billede zypher212 Nybegynder
02. juni 2005 - 23:03 #7
Hvis det bare var så simpelt... Jeg er helt grøn i programmering, så fisker efter at du kommer med et eksempel hvor du benytter denne kode, og laver den så den kan kompiles :)
Avatar billede bertelbrander Novice
02. juni 2005 - 23:14 #8
Du kan putte dette ind i bunden af .cpp filen:

int WINAPI WinMain(HINSTANCE hInstance,
                  HINSTANCE hPrevInstance,
                  LPSTR lpCmdLine,
                  INT nCmdShow)
{
}

Og denne linie i toppen:
#include <windows.h>

Så kan det oversætte, men der vil ikke ske noget hvis du forsøger at køre det.
Avatar billede bertelbrander Novice
02. juni 2005 - 23:15 #9
Glemte lige; du skal nok have en:

  return 0;

mellem { og }
Avatar billede zypher212 Nybegynder
02. juni 2005 - 23:18 #10
# bertelbrander
Gjorde som du sagde med får denne log ud:
Kompiler: Default compiler
Eksekverer  g++.exe...
g++.exe "C:\Documents and Settings\Benjamin  Krogh\Skrivebord\kap1\Auto.cpp" -o "C:\Documents and Settings\Benjamin  Krogh\Skrivebord\kap1\Auto.exe"    -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include"  -I"C:\Dev-Cpp\include\c++\3.4.2\backward"  -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32"  -I"C:\Dev-Cpp\include\c++\3.4.2"  -I"C:\Dev-Cpp\include"  -L"C:\Dev-Cpp\lib"
C:\Documents and Settings\Benjamin  Krogh\Skrivebord\kap1\Auto.cpp: In function `int WinMain(HINSTANCE__*, HINSTANCE__*, CHAR*, INT)':
C:\Documents and Settings\Benjamin  Krogh\Skrivebord\kap1\Auto.cpp:22: error: expected `;' before '}' token

Eksekvering afbrudt
Avatar billede arne_v Ekspert
02. juni 2005 - 23:23 #11
jeg vil nok anbefale at starte med en consoel app og en main funktion
Avatar billede bertelbrander Novice
02. juni 2005 - 23:25 #12
Er det linien med  return 0; ?
har du husket ; efter 0 ?
Avatar billede zypher212 Nybegynder
02. juni 2005 - 23:26 #13
Ja det vil jeg også foretrække da det er min klare opfattelse at det er nemmest.. Ville som sådan helst have en int main() funktion placeret det rette sted så jeg kunne kompilere det, og samtidigt forklaret hvorfor alle mine andre forsøg på at placere den ikke duer.
Kan jeg få det??
Avatar billede bertelbrander Novice
02. juni 2005 - 23:26 #14
Du kunne bruge:

int main()
{
  return 0;
}

i stedet for winmain(...)
Avatar billede bertelbrander Novice
02. juni 2005 - 23:28 #15
Så hele auto.cpp kommer til at se sådan ud:

#include"Auto.h"

void Auto::registrerAuto(int sernum)

{
    m_nSerienummer = sernum;

}

int  Auto::getRegNo()
{
    return m_nSerienummer;

}

int main()
{
}
Avatar billede arne_v Ekspert
02. juni 2005 - 23:31 #16
int main()
{
  return 0;
}
Avatar billede arne_v Ekspert
02. juni 2005 - 23:32 #17
og projekt typen i dev-cpp skal så være console app ikke windows GUI app
Avatar billede zypher212 Nybegynder
02. juni 2005 - 23:35 #18
Ja... Jeg har prøvet at placere dette her i koden:

int x;
cin>>x;

Da jeg så kan teste om den bruger hele koden.. Hvad den ikke gør, min kode ser sådan her ud:
#include "Auto.h"
#include <iostream>
using namespace std;
void Auto::registrerAuto(int sernum)


    m_nSerienummer = sernum;
    int x;
    cin>>x;
}

int  Auto::getRegNo()

    return m_nSerienummer;

}
int main()
{
    return 0;
}

Men den vil slette ikke ha input fra mig... :S
Skal ikke bruge "x" til noget, kun til at tjekke at det virker
Avatar billede arne_v Ekspert
02. juni 2005 - 23:37 #19
Du bruger jo ikke din Auto klasse endnu så cin>>x bliver ikke kørt
Avatar billede zypher212 Nybegynder
02. juni 2005 - 23:39 #20
Hmm det forstår jeg ikke... Er det ikke for ringe at der står sådan et eksempel i en bog til begyndere??? Endda indenfor de 10 første sider... Det er da vel meningen at man skal kompile de kode eksempler der står der... :)

Nå I har vist gjort rigeligt mht hvad jeg spurgte om. :)

Smid nogle svar så bytter jeg min bog :)
Avatar billede bertelbrander Novice
02. juni 2005 - 23:48 #21
Du kan lave din main om til:
int main()
{
  Auto MyAuto;
  MyAuto.registrerAuto(1234);
  return 0;
}

og måske ændre registrerAuto til:

void Auto::registrerAuto(int sernum)
{
    m_nSerienummer = sernum;
    cout << sernum << endl;
    int x;
    cin>>x;
}

Så kan du se at den skriver 1234 ud, og venter på at du taster et tal.

Er dette det første eksemple i bogen?
Avatar billede zypher212 Nybegynder
02. juni 2005 - 23:56 #22
He nej ikke det første... Det tredje tror jeg :)
Avatar billede zypher212 Nybegynder
03. juni 2005 - 15:55 #23
I dropper bare nogle svar en gang. :)

Lukker lige så det ser pænt ud :)
Avatar billede zypher212 Nybegynder
14. juni 2005 - 20:35 #24
Vil I ikke have point??? Lukkede kun fordi spørgsmålet var blevet besvaret. Smid endelig nogle svar. :)
Avatar billede arne_v Ekspert
14. juni 2005 - 20:41 #25
der kan ikke ligges svar eller uddeles point når spørgsmålet er lukket ...
Avatar billede zypher212 Nybegynder
14. juni 2005 - 20:53 #26
Hov. :( Skal jeg ikke lige lave et nyt spørgsmål så???
Avatar billede arne_v Ekspert
14. juni 2005 - 20:55 #27
det er vist ikke umagen værd

Bertel har trukket det tunge læs

og han samler af uransagelige årsager ikke på point
Avatar billede zypher212 Nybegynder
14. juni 2005 - 22:35 #28
Har nu lidt dårlig samvittighed over det :/ sig endelig til hvis du skulle ændre mening. De point er ikke så nødvendige for mig :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



Seneste spørgsmål Seneste aktivitet
I dag 15:08 Http client med X509Certificate2 Af joki i C#
I dag 13:02 Hjemmenetværk Af Andfer i LAN/WAN
I dag 11:17 Chrombook Af lurup i Andre styresystemer
I går 15:20 Core i5-7200 processor Af Wombat i Windows
I går 15:07 Hjælp med HTML og CSS Af Nojsa i HTML