[c++] OpenGl Headers include probleem

Pagina: 1
Acties:

  • ozkilator
  • Registratie: Februari 2004
  • Niet online
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:

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


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 25-05 20:56
Ik denk dat je eerst nog windows.h moet includen (dat doet die foutmelding in ieder geval vermoeden). Officieel zou dat natuurlijk niet horen moeten.

  • ozkilator
  • Registratie: Februari 2004
  • Niet online
He krijg nou wat, dat werkt. Wel vreemd dat ie die nodig heeft dan...

Thanx :)

Yoda: Very dark the other side is.. hmm.. too dark... Obi-Wan: Yoda, shut up and eat your toast allready...


  • EfBe
  • Registratie: Januari 2000
  • Niet online
windows.h is nodig omdat de GDI binding die .h nodig heeft. En zonder die GDI binding geen canvas en dus geen graphics :)

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 25-05 20:56
Je zou verwachten dat die header file 'm dan zelf even include, als hij vind dat 'ie 'm nodig heeft (als windows.h een vrij grote dependency om 'zomaar' even mee te nemen). Het is ook een Visual Studio specifiek probleem, trouwens, want met Dev-C++ hoef ik 'm niet te includen.

  • ozkilator
  • Registratie: Februari 2004
  • Niet online
Ben voor de zekerheid maar ff een servicepack aan het downloaden (met jawel 5k per seconde ) kijken of dat het oplost. Maar voor nu ben ik uit de brand :D

Yoda: Very dark the other side is.. hmm.. too dark... Obi-Wan: Yoda, shut up and eat your toast allready...

Pagina: 1