Der Folgende Text behandelt Linker-Fehler der Art:
project\src\shader.cpp|19|undefined reference to `_imp____glewCreateShader'
project\src\shader.cpp|83|undefined reference to `_imp____glewCreateProgram'
Was tut man nicht alles für die Uni.
Für den Gegenstand Echtzeitgrafik soll eine kleine Demo hergestellt werden und ein paar Effekte eingebaut werden.
Jetzt ist aber mein CG2 (der gegenstand wo ich das letzte mal in openGL was gemacht hab) doch schon gut 10 Semester her. Und es liegen auch gut 2 Major-Versions von openGL dazwischen. Ja, ich weiß dass es rückwärts kompatibel ist, ABER es muss mindestens 3.3 core profile verwendet werden. Also hab ich mich auf die Suche nach einem Tutorial gemacht das die Grundlegenden Änderungen aufzeigt und dabei stieß ich auf folgendes Problem:
Wie setzt man ein simples Projekt auf das unter MinGW mit dem GCC compiliert?
Diese Frage hat mich doch einige Zeit gekostet und darum halte ich das hier fest.
1. Wenn man vorcompilierte Libraries verwendet dann darauf achten die zu verwenden die für/mit MinGW compiliert wurden. (Dieses war vorallem bei glfw der Fall - Hier gibt es bei den precompiled libs versionen für MinGW)
2. Egal was man tut, glew sollte man auf jedenfall selbst compilieren, es haut sonst einfach nicht hin. Ist aber denkbar einfach:
2.1 minGW-Shell öffnen
2.2 $ mount
2.3 $ cd /drive/pfad/zum/glew (hier ist der pfad gemeint unter dem im glew das Makefile (für die die es nicht wissen "Makefile" ist auch der name der Datei siehe
make) liegt.
2.4 $ make
2.6 kopiere die .a, .dll und .h dateien an die richtigen stellen im Projekt.
2.6 sollte make oder gcc oder sonst was fehlen kann man das nach installieren:
$ mingw-get install
Ich hab für mein Projekt CodeBlocks verwendet und auch eingerichtet. Folgendes sollte/muss getan werden:
Buildsettings: Project->build Options
Man wähle das Projekt (nicht debug, nicht release) und ...
-klick auf Linker-Settings:
add -> die .lib und .a dateien auswählen (alle müssen aufgelistet sein)
-klick auf search Directories:
Compiler:
add -> Ordner mit den eigenen sourcen
add -> Ordner mit den .h aus libraries z.B. der wo glew.h liegt
Linker:
add -> Ordner wo die .lib und .a Dateien liegen
add -> Ordner wo die .dll Dateien liegen
OK
Natürlich muss man schon auch die eigenen Source-Dateien ins Project adden und so, aber ich geh davon aus dass das kein Hindernis darstellt.
Es kann jetzt noch sein dass man beim ersten start von CodeBlock nicht MinGW (sprich GCC) ausgewählt hat. hierfür kann man unter:
File->Properties...->Advanced
Noch den Compiler einstellen.
Im Prinzip war es das. Jetzt sollte das Projekt ohne Linker-Fehler laufen.
Sollte das irgendwann irgendjemanden helfen, würde ich mich über einen kurzen Kommentar freuen.