[C++] Beginnen met OpenGL *

Pagina: 1
Acties:

  • Opi
  • Registratie: Maart 2002
  • Niet online
Nu ik mij enigzins verdiept heb in c++ probeer ik al een tijdje meer kennis te verkrijgen over OpenGL. Maar wat ik ook doe, geen enkel voorbeeld komt foutloos door de compiler of builder.

De .dll, .lib en .h files heb ik allemaal in de juiste directory gezet, maar als ik een voorbeeld probeer te builden (nadat er eindelijk geen errors meer in zitten) krijg ik de volgende errors.
code:
1
2
3
4
5
6
7
8
9
#include <GL/glut.h>

int main(int argc, char** argv)
{
   glutInit(&argc,argv);
   glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH);
   glutInitWindowSize(500,500);
   glutInitWindowPosition(0,0);
}


Errors:
code:
1
2
3
4
5
Linking...
Helloworld.obj : error LNK2001: unresolved external symbol _glutInitWindowPosition@8
Helloworld.obj : error LNK2001: unresolved external symbol _glutInitWindowSize@8
Helloworld.obj : error LNK2001: unresolved external symbol _glutInitDisplayMode@4
Helloworld.obj : error LNK2001: unresolved external symbol _glutInit@8


Ik heb geen flauw idee wat deze errors betekenen en hoe ik ze op kan lossen.


offtopic:
Ik begrijp dat dit voor de meesten als een ongelovelijke n00b-vraag overkomt, maar ik heb me serieus proberen te verdiepen in de materie en heb het nu eigenlijk al bijna gehad. :) Sorry voor het verprutsen van de layout.

[ Voor 4% gewijzigd door Opi op 24-08-2003 17:29 ]


  • Exirion
  • Registratie: Februari 2000
  • Nu online

Exirion

Gadgetfetisjist

Je moet wel met de GLUT libraries erbij linken he.

"Logica brengt je van A naar B, verbeelding brengt je overal." - Albert Einstein


  • GlowMouse
  • Registratie: November 2002
  • Niet online
Op http://nehe.gamedev.net staan goede OpenGL tutorials :D

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:56
Zoals Exirion al zegt, moet je de GLUT library meelinken. Hoe dat gaat is afhankelijk van de gebruikte compiler.

  • Opi
  • Registratie: Maart 2002
  • Niet online
Zijn deze dan niet direct gelinkt wanneer je in Tools -> Options -> Directories -> Library files meldt waar ze staan?

Bedankt voor de link GlowMouse. :)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

OpifexMaximus schreef op 24 August 2003 @ 17:37:
Zijn deze dan niet direct gelinkt wanneer je in Tools -> Options -> Directories -> Library files meldt waar ze staan?
Je geeft het antwoord zelf al: je meldt alleen waar ze staan. Vervolgens meelinken is een 2e :P

Je bent overigens een paar dingetjes van onze fameuze P&W FAQ - De "quickstart" vergeten (die moet je toch op zoek naar slotjes vaak genoeg gezien hebben :Y), zoals [c++] in je topictitel en ernstiger: welke IDE je gebruikt :+

Het ziet er overigens uit als Visual Studio 6 of .NET, en dan kun je het op 2 manieren oplossen. De beste is project wide in de project settings, Linker tab. Daar staat ergens een hoekje 'Additional libraries', alwaar je even die glut.lib moet aangeven. 2e optie is de volgende coderegel:
C++:
1
#pragma comment(lib, "glut.lib")

De 2e geeft aan dat wanneer de C++ file waarin hij voorkomt wordt gecompileerd automatisch de glut.lib door de linker moet worden meegenomen op het resulterende project. Soms netter, stukken minder portable :)

Professionele website nodig?


  • Opi
  • Registratie: Maart 2002
  • Niet online
curry684 schreef op 24 August 2003 @ 19:16:
Je bent overigens een paar dingetjes van onze fameuze P&W FAQ - De "quickstart" vergeten (die moet je toch op zoek naar slotjes vaak genoeg gezien hebben :Y), zoals [c++] in je topictitel en ernstiger: welke IDE je gebruikt :+
Ik wist niet zeker of er c++ of OpenGL in moest staan, maar je hebt uiteraard een puntje en ik ben me nu ook heel diep aan het schamen. :)
De P&W FAQ is :9~. Bijna net zo mooi als die van W&L. :+ (iig ga ik hem helemaal door lezen.)

Ik gebruik idd Visual Studio 6, maar heb bij Project Settings -> Link -> Input: als additional library path ...\Lib\glut.lib ingevoerd wat niets opleverde evenals ...\Lib.
Elder kon ik niet iets vinden wat er op lijkt:
De beste is project wide in de project settings, Linker tab. Daar staat ergens een hoekje 'Additional libraries', alwaar je even die glut.lib moet aangeven.
Tevens heb ik de regel toegevoegd bij Project Settings -> C/C++ -> Additional include directories: ...\Lib evenals \Lib\glut.lib wat ook niks opleverde.
2e optie is de volgende coderegel:
C++:
1
#pragma comment(lib, "glut.lib")
Deze werkt wel (joepie :)), al hoop ik nog steeds de andere methode aan de praat te krijgen.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Ik heb geen VS6 meer ergens staan, dus kan je helaas niet helpen meer daarmee behalve met het stukje dat ik uit m'n geheugen heb opgediept :)

Die pragma is overigens niet eens zozeer fout maar wordt vaker gebruikt bij frameworks onder het motto: "als je deze 3dWorldEncapsulator class meecompileert heb je deze lib ook nodig". Daar jouw main-cpp ook direct die lib nodig heeft misstaat ie niet echt daar :p

wat overigens dus zoals je zelf zegt niet wegneemt dat je die andere variant niet aan de praat moet krijgen ;)

Professionele website nodig?


  • killercow
  • Registratie: Maart 2000
  • Laatst online: 07-08 19:18

killercow

eth0

Ik kan OpifexMaximus NeHe idd ook aanraden, maar als ik zijn topic even mag lenen voor een ander vraagje zou dat erg aardig zijn, ik wil eigenlijk weer beginnen met openGL maar dan op mijn suse 8.1 bak

kan iemand mij hierbij ook zoiets als NeHe aanwijzen want ik vind daar alles behalve een linux tut.

openkat.nl al gezien?


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:56
Je kan de library trouwens ook gewoon aan je Visual Studio project toevoegen; dat is misschien mooier dan zo'n pragma directive.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

killercow schreef op 24 August 2003 @ 20:03:
Ik kan OpifexMaximus NeHe idd ook aanraden, maar als ik zijn topic even mag lenen voor een ander vraagje zou dat erg aardig zijn, ik wil eigenlijk weer beginnen met openGL maar dan op mijn suse 8.1 bak

kan iemand mij hierbij ook zoiets als NeHe aanwijzen want ik vind daar alles behalve een linux tut.
Moet je beter zoeken ;) De source van bijna elke tutorial is geport naar Linux/GLX of Linux/SDL, en zijn ook gewoon te downloaden (scroll ff naar onder bij elke tutorial :) ).

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Opi
  • Registratie: Maart 2002
  • Niet online
Soultaker schreef op 24 augustus 2003 @ 20:47:
Je kan de library trouwens ook gewoon aan je Visual Studio project toevoegen; dat is misschien mooier dan zo'n pragma directive.
Is dat dan niet wat ik na de post van curry geprobeerd heb?

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:56
OpifexMaximus schreef op 24 augustus 2003 @ 21:34:
Is dat dan niet wat ik na de post van curry geprobeerd heb?
Nee, dat is een andere aanpak (die ook zou moeten werken, trouwens). Of je bij die project settings relatieve paden kan invoeren zou ik niet weten; ik voeg dan meestal de directory toe aan de algemene library directories (onder Tools > Settings of iets dergelijks? Ik heb nu even geen Windows ter beschikking), waarna ik gewoon de bestandsnaam (hier "glut.lib", dacht ik?) toevoeg, zonder padgegevens.

Wat ik echter bedoelde was dat je ook gewoon het bestand aan je project kan toevegen (rechts in de fileview klikken, of via het menu File, en dan "Add file to project..." of iets dergelijks). Je kunt dan gewoon de juiste library file (die glut.lib dus) aanklikken in de open file dialog. Helaas kan ik de exacte menuutjes nu even niet nakijken, maar het is dus de bedoeling dat die library file bij je project files komt te staan (waar nu je overige source files enzo ook staan).

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

offtopic:
psst Soultaker nofi maar je hebt mijn en Opi's posts niet helemaal goed gelezen: ik had al aangegeven dat project settings netter zou zijn dan de pragma, en die ging ie dus wel proberen nadat ie de pragma-variant aan de praat had ;)

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 04:06

.oisyn

Moderator Devschuur®

Demotivational Speaker

killercow schreef op 24 August 2003 @ 20:03:
kan iemand mij hierbij ook zoiets als NeHe aanwijzen want ik vind daar alles behalve een linux tut.
Als je glut gebruikt dan is er geen verschil tussen windows en linux. Glut wrapt de windowmanager etc. voor je

Geen idee of NeHe ook glut beschrijft trouwens, persoonlijk vind ik NeHe's tutorials erg bagger :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Opi
  • Registratie: Maart 2002
  • Niet online
.oisyn schreef op 25 August 2003 @ 12:19:
Geen idee of NeHe ook glut beschrijft trouwens, persoonlijk vind ik NeHe's tutorials erg bagger :)
Heb je misschien een beter alternatief? :) * Opi zoekt op google meestal op OpenGL icm tutorial, faq of example/source code.

Heb een screencapture gemaakt, maar zit nu op een andere compu. Deze zal hopelijk snel volgen. :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 04:06

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik werk voornamelijk in Direct3D, maar ik geloof dat ik mijn eerste OpenGL tuts gewoon bij www.flipcode.com vandaan had gehaald

(bij tutorials staat een Advanced texture mapping tutorial, en bij Development Links kun je zoeken op OpenGL, dan krijg je bergen aan informatie)

[ Voor 37% gewijzigd door .oisyn op 25-08-2003 12:35 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:56
curry684 schreef op 25 August 2003 @ 10:55:
psst Soultaker nofi maar je hebt mijn en Opi's posts niet helemaal goed gelezen: ik had al aangegeven dat project settings netter zou zijn dan de pragma, en die ging ie dus wel proberen nadat ie de pragma-variant aan de praat had ;)
Boehoehoe! Ze begrijpen me maar niet! :'(

Wat ik dus bedoelde is dat je behalve als pragma en behalve door de library toe te voegen onder de project settings, je de library ook (als derde mogelijkheid) als bestand aan je project kan toevoegen (dus niet onder de project settings, maar in de project files treeview/tab aan de linkerkant). Capice? :)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

* curry684 knuffelt Soultaker en fluistert: "ik begrijp je hoor!" :+

Professionele website nodig?

Pagina: 1