Ik zit met een probleem met het include van de opengl headers. Als ik deze include in een cpp file (waarin de winmain zit) en alles binnen die zelfde file programmeer dan is er niks aan de hand.
Nu wil ik echter gebruik gaan maken van klasses en vanuit die klasses worden opengl functies aangeroepen. Nu is het gebruikelijk bij c++ als je een klasse hebt dat je de klasse in een h file zet en de implementatie van de klasse in een cpp file met de zelfde naam.
Als ik nu in die cpp file probeer functies aan te roepen van opengl en de opengl headers include dan gaat de compiler fouten geven namelijk:
Nu heb ik al van alles geprobeerd met #ifndef etc maar ik kom niet tot code die werkt. Nu heb ik van nehe ff de meest simpele opengl code gedownload en deze geprobeerd uit te breiden met een loze klasse genaamd IncTestObject. In het bestand IncTestObject.h staat het volgende:
en in de file IncTestObject.cpp staat:
Mega simpel toch? De code van nehe staat in een file genaamd Inctest.cpp en compileert perfect zonder deze 2 files. Zet ik de code van de IncTestObject.cpp in de .h file dan compileert ie wel. Maar de implementatie van de klasse moet altijd in een cpp file.
Weet iemand wat ik fout doe? Ik heb gezocht hier op het forum ben een topic tegen gekomen waarin het zelfde staat maar niet met een oplossing..
Hier is eventueel de project file te downloaden (vc++ 6.0)
www.blinx.nl/code/includetest.zip
Nu wil ik echter gebruik gaan maken van klasses en vanuit die klasses worden opengl functies aangeroepen. Nu is het gebruikelijk bij c++ als je een klasse hebt dat je de klasse in een h file zet en de implementatie van de klasse in een cpp file met de zelfde naam.
Als ik nu in die cpp file probeer functies aan te roepen van opengl en de opengl headers include dan gaat de compiler fouten geven namelijk:
code:
1
2
3
4
5
6
7
8
| Compiling... IncTestObject.cpp d:\development\microsoft visual studio\vc98\include\gl\gl.h(1152) : error C2144: syntax error : missing ';' before type 'void' d:\development\microsoft visual studio\vc98\include\gl\gl.h(1152) : error C2501: 'WINGDIAPI' : missing storage-class or type specifiers d:\development\microsoft visual studio\vc98\include\gl\gl.h(1152) : fatal error C1004: unexpected end of file found Error executing cl.exe. IncTest.exe - 3 error(s), 0 warning(s) |
Nu heb ik al van alles geprobeerd met #ifndef etc maar ik kom niet tot code die werkt. Nu heb ik van nehe ff de meest simpele opengl code gedownload en deze geprobeerd uit te breiden met een loze klasse genaamd IncTestObject. In het bestand IncTestObject.h staat het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| #ifndef INCTESTOBJECT_H
#define INCTESTOBJECT_H
#include <gl\gl.h>
class IncTestObject{
private:
int x;
public:
IncTestObject();
void tekenCrap();
};
#endif |
en in de file IncTestObject.cpp staat:
code:
1
2
3
4
5
6
7
8
9
10
11
| #include "IncTestObject.h"
IncTestObject::IncTestObject(){
//doe iets
}
void IncTestObject::tekenCrap(){
glBegin(GL_QUADS);
// glVertex etc etc etc
glEnd();
} |
Mega simpel toch? De code van nehe staat in een file genaamd Inctest.cpp en compileert perfect zonder deze 2 files. Zet ik de code van de IncTestObject.cpp in de .h file dan compileert ie wel. Maar de implementatie van de klasse moet altijd in een cpp file.
Weet iemand wat ik fout doe? Ik heb gezocht hier op het forum ben een topic tegen gekomen waarin het zelfde staat maar niet met een oplossing..
Hier is eventueel de project file te downloaden (vc++ 6.0)
www.blinx.nl/code/includetest.zip
Yoda: Very dark the other side is.. hmm.. too dark... Obi-Wan: Yoda, shut up and eat your toast allready...