Fehler im Programm oder mit der Bibliothek ?

Crazy_down

Erfahrenes Mitglied
Hi ihr, ich habe nach dem folgendem Tutorial das Programm nach gebaut !
http://www.softgames.de/developia/viewarticle.php?cid=19034
wenn ich das Programm so Kompilere, kommt folgender fehler !

Code:
:\Schule\Programmieren\ClanLib\Erster Test\main.cpp(15) : error C2259: "myGameApp" : Instanz von abstrakter Klasse kann aufgrund nachfolgender Elemente nicht erstellt werden:
  	    j:\schule\programmieren\clanlib\erster test\main.h(13) : Siehe Deklaration von 'myGameApp'
 J:\Schule\Programmieren\ClanLib\Erster Test\main.cpp(15) : warning C4259: 'int __thiscall CL_ClanApplication::main(int,char ** )' : Rein virtuelle Funktion wurde nicht definiert
 		h:\microsoft c++\clanlib\sources\api\application\clanapp.h(54) : Siehe Deklaration von 'main'
 J:\Schule\Programmieren\ClanLib\Erster Test\main.cpp(15) : error C2259: "myGameApp" : Instanz von abstrakter Klasse kann aufgrund nachfolgender Elemente nicht erstellt werden:
  	    j:\schule\programmieren\clanlib\erster test\main.h(13) : Siehe Deklaration von 'myGameApp'
 J:\Schule\Programmieren\ClanLib\Erster Test\main.cpp(15) : warning C4259: 'int __thiscall CL_ClanApplication::main(int,char ** )' : Rein virtuelle Funktion wurde nicht definiert
 		h:\microsoft c++\clanlib\sources\api\application\clanapp.h(54) : Siehe Deklaration von 'main'
 J:\Schule\Programmieren\ClanLib\Erster Test\main.cpp(18) : error C2589: 'int' : Ungueltiges Symbol auf der rechten Seite von '::'
 J:\Schule\Programmieren\ClanLib\Erster Test\main.cpp(18) : warning C4091: '' : Ignoriert auf der linken Seite von 'int', wenn keine Variable deklariert wurde
  J:\Schule\Programmieren\ClanLib\Erster Test\main.cpp(18) : error C2143: Syntaxfehler : Fehlendes ';' vor '::'
  J:\Schule\Programmieren\ClanLib\Erster Test\main.cpp(18) : error C2143: Syntaxfehler : Fehlendes ';' vor '::'
  J:\Schule\Programmieren\ClanLib\Erster Test\main.cpp(19) : error C2143: Syntaxfehler : Fehlendes ';' vor '{'
  J:\Schule\Programmieren\ClanLib\Erster Test\main.cpp(19) : error C2447: Funktionskopf fehlt - Parameterliste im alten Stil?
  Fehler beim Ausführen von cl.exe.

So wenn ich jetzt die Instanz der KLasse auskommentier und das "Int" bei :
int myGameApp::int main(int argc, char* argv[])
{
try {
... weg nehme,

kommt der Linker prozess und dann der fehler

Code:
IBCMTD.lib(dosmap.obj) : error LNK2005: __dosmaperr bereits in LIBCD.lib(dosmap.obj) definiert
  LIBCMTD.lib(getenv.obj) : error LNK2005: _getenv bereits in LIBCD.lib(getenv.obj) definiert
  LIBCMTD.lib(tolower.obj) : error LNK2005: __tolower bereits in LIBCD.lib(tolower.obj) definiert
  LIBCMTD.lib(tolower.obj) : error LNK2005: _tolower bereits in LIBCD.lib(tolower.obj) definiert


Ich weiß aber nicht was das ist, bedeutet es das er 2 mal auf die selbe Bibliothek zugreift ?
Bitte um Hilfe !
danke schonmal im vorraus.
 
moin


Eigentlich ist das zweite int bei "int myGameApp::int main(int argc, char* argv[])" doch überflüssig?!
Oder sehe ich das jetzt falsch.

Und ist dein Code so groß das posten zu umständlich wäre? Sonst poste ihn einfach mal.


mfg
umbrasaxum
 
Nene, der ist net groß, ist einfach der aus dem Tutorial was ich im post verlinkt hatte.

also die main.h
Code:
 #ifndef _MAIN_H_
 #define _MAIN_H_
 #include<application.h>
 
 
 //class myGame : public CL_ClanApplication {
 // }; 
 
 
 class myGameApp : public CL_ClanApplication
 {
 public:
 
 virtual int main(int argc, char* argv[]);
 };
 
 #endif // main.h


und die main.cpp
Code:
 #include<core.h> 
 #include<display.h> 
 #include<gl.h> 
 #include <application.h> 
 #include<iostream> 
 #include <windows.h>
 #include"main.h"
 
 
 // eine Instanz der Klasse myGameApp erzeugen
  myGameApp gameapplication;
 
 
 int myGameApp::int main(int argc, char* argv[])
 {
 try {
 CL_SetupCore::init();
 CL_SetupDisplay::init(); 
 CL_SetupGL::init();
 
 
 CL_DisplayWindow display("Mein Spiel", 640, 480);
 
 
 while(!CL_Keyboard::get_keycode(CL_KEY_ESCAPE)){ 
 CL_Display::clear(); 
 CL_Display::flip(); 
 CL_System::keep_alive(10); 
 }
 
 } 
 
 catch(CL_Error error) { 
 std::cerr << error.message.c_str() << std::endl; 
 return -1; 
 
 } 
 return 0; 
 }

Hoffe du kannst mir helfen.
 
Da CL_ClanApplication eine Abstrakte Basisklasse ist, muss von ihr abgeleitet werden (machst du ja auch).
Die Methode 'main' ist dabei "Pure Virtual" was heißt, das es nur ein Interface ist, ergo musst du diese 'main' implementieren.
Außerdem MUSS das 'int' das umbrasaxum schon angesprochen hatt unbedingt weg.

Daniel
 
Also wie du das mit der main meinst versteh ich nicht, ich habe doch die main.h eingebunden oder wie meinst du ?

und zum 2. sollte es dann so aussehen ?

int myGameApp::main(int argc, char* argv[])

wenn ich die instanz der klasse erzeuge kommt ja auch nen fehler, nur wenn ich es auskommentiere geht es ein wenig weiter !

myGameApp gameapplication;
myGameApp" : Instanz von abstrakter Klasse kann aufgrund nachfolgender Elemente nicht erstellt werden:
 
Kauf dir mal ein C++ Buch wo Ableitungen behandelt werden dann verstehst du auch das Prinzip einer abstrakten Basisklasse.

Eine kleine Erklärung findest du hier:
http://de.wikipedia.org/wiki/Abstrakte_Klasse

Außerdem bin ich der Meinung, um ein Spiel entwickeln zu können muss man über die Werkzeuge und Grundkenntnisse der entsprechenen Programmiersprache bescheidwissen.

Daniel
 
Zurück