Installation von OpenGl
-
Hallo Zusammen,
Ich weiss, dass jeder in so einem Forum ein freiwilliger Helfer ist und man dem geschenkten Gaul nicht ins Maul schaut. Aber so wurde ich wohl noch nie von
Antworten in einem Forum enttäuscht.Ich habe eine sehr einfache Frage und muss mir wiederholt sagen lassen, dass ich doch das Programmieren mangels Grundlagenkenntnissen besser sein lassen soll.
Es ist schon länger her, aber gerade in diesem Forum wurde mir schon sehr geholfen.
überigens habe ich sehr wohl Grundlagenkenntnisse. Ich habe das Fach Informatik 1 besucht und mit sehr guter Note abgeschlossen. Allerdings haben wir uns dort beinahe ausschliesslich mit dem schreiben von Quellcode befasst.
...was ist eine Funktion, eine Schleife, ein Zeiger, eine Klasse, u.s.w.Man müsste also noch einmal darüber diskutieren was den Grundlagen sind.
-
sulky schrieb:
Ich habe eine sehr einfache Frage und muss mir wiederholt sagen lassen, dass ich doch das Programmieren mangels Grundlagenkenntnissen besser sein lassen soll.
Zumindest ich habe das nicht gesagt. Ich sage nur, dass du diese Grundlagen besser lernen solltest, wenn du Programmieren willst. In jedem Handwerk ist es wesentliche Grundvoraussetzung, seine Werkzeuge zu kennen und damit umgehen zu können und das ist beim Programmieren nicht anders. Abgesehen davon, haben wir dir doch bereits alles nötige gesagt!? Oder was genau ist dir noch unklar?
sulky schrieb:
Man müsste also noch einmal darüber diskutieren was den Grundlagen sind.
Ich wüsste nicht, was es da groß zu diskutieren gäbe. Der Umgang mit Compiler, Linker und Debugger ist nunmal wesentliche Grundlage die jeder Programmierer drauf haben muss. Niemand sagt, dass du das Programmieren bleiben lassen sollst. Ich betone das nur, um dir klar zu machen, dass du dich einfach damit beschäftigen und diese fehlenden Grundlagen nachholen solltest, denn ohne wirst du einfach nicht weit kommen, wie du ja wohl selbst bereits merkst. Nutz doch die Chance, was zu lernen, anstatt beleidigt zu sein, wie böse doch alle sind, weil sie dir nicht gleich eine fertige Lösung deiner Probleme ausspucken. Eine Schritt für Schritt Anleitung hier zu posten, würde dir nur schaden, denn danach weißt du immer noch nicht, wie die Dinge wirklich funktionieren und hast auch keine Motivation mehr, dich damit auseinanderzusetzen. In diesem Sinne:
dot schrieb:
Mach dich mit dem Zusammenspiel von Compiler und Linker vertraut und lern was statische und dynamische Libraries genau sind. Anstatt eine fertig kompilierte Binary zu verwenden, lad dir den Source Code von freeglut und kompilier es selbst. Schau dir an wofür die VC++ Directories gut sind. Anders gesagt: Lern mit deinen Werkzeugen umzugehen, wenn du die Hintergründe verstanden hast, wirst du selbst wissen, wie genau du deinen Compiler und Linker konfigurieren musst, um freeglut verwenden zu können. Dann musst du auch nichtmehr blind irgendwelchen fragwürdigen Tutorials folgen.
-
Inzwischen konnte ich mein Programm kompliieren, aber bei Linken klappts noch nicht. Es kommt fehlermeldung error LNK2019.
Ja, ich weiss, dass man den Linker irrgenwie einstellen muss, damit der die
nötigen Dateien findet, aber ich weiss nicht genau wie.Als ich das beim letzten Man gemacht habe, fand ich eine Schritt für Schritt Anleitung. Diese fand ich nicht wieder.
Ich gehe auf Projekteigenschaften (Alt+f7), dann auf "Konfigurationen",
dann auf "Linker" und weiter weiss ich nicht mehr, ist zu lange her.Was muss ich nun noch machen?
-
Hast du beim Linker die richtigen Libraries als Additional Dependencies ("Zusätzliche Abhängigkeiten") eingetragen? Beachte dabei insbesondere 32 Bit vs 64 Bit. Stimmen die Suchpfade in den VC++ Directories? Wie genau lautet die Fehlermeldung?
-
So lautet die Fehlermeldung:
1>MSVCRT.lib(crtexew.obj) : error LNK2019: symbole externe non résolu _WinMain@16 référencé dans la fonction ___tmainCRTStartup
1>C:\Users\lukas\Documents\Visual Studio 2010\Projects\opengl\Debug\opengl.exe : fatal error LNK1120: 1 externes non résolusOb ich die zusätzlichen anhänigkeiten korrekt eingetragen habe bezweifle ich.
Dort habe ich einfach freeglut.lib geschrieben. Mehr habe ich da nicht gemacht
-
Du hast offenbar ein Projekt für eine Windows Anwendung erstellt und nicht für eine Konsolenanwendung. Windows Anwendungen starten nicht mit main(), sondern mit WinMain()...
-
Ja, das ist genauso.
Nun bin ich einen grossen Schritt weiter.
Ich habe das geändert und der Linker gibt nun keine Fehlermeldung mehr.
Jedoch kommt unmittelbar nach dem Programstart die Fehlermeldung, dass freeglut.dll nicht installiert sei.
Wie bereits beschrieben ist diese Datei im Ordenr System 32. Wohin gehört das Ding?
-
sulky schrieb:
Wie bereits beschrieben ist diese Datei im Ordenr System 32. Wohin gehört das Ding?
In den Ordner wo die exe liegt.
-
Ist ja super, nun gehts.
Vielen Dank.
Kannst du mir einen Tipp geben, wie ich mich mit MVc++ Linker, Complier u.s.w.
vertraut machen kann?Es ist einfach wirklich so, dass sämtlihce Einführungen in C++ sich mit Variablen, Schleifen, funktionen und Klassen befassen.
Für Freeglut funktioniert die Sache nun einmal. Noch habe ich den Ordenr SDL.
Den versuche ich nun einmal selbständig zum laufen zu bringen,
-
Wofür brauchst du denn die SDL?
-
Der Beispielcode im Tutorial beginnt mit
#include <SDL/SDL.h>
#include <GL/gl.h>
#include <GL/glu.h>Somit habe ich die SDL auch installiert. An dieser Stelle noch folgende Frage:
Die Headerdateien gl.h und glu.h habe ich nicht.
Stattdessen habe ich glut.h verwendet. Bisher funktiobniert alles.
Enspricht sich das oder werde ich da noch überraschungen erleben?
-
sulky schrieb:
Der Beispielcode im Tutorial beginnt mit
#include <SDL/SDL.h>
#include <GL/gl.h>
#include <GL/glu.h>Somit habe ich die SDL auch installiert. An dieser Stelle noch folgende Frage:
Die Headerdateien gl.h und glu.h habe ich nicht.
Stattdessen habe ich glut.h verwendet. Bisher funktiobniert alles.
Enspricht sich das oder werde ich da noch überraschungen erleben?Bei mir gibt es sowohl gl.h als auch glu.h im SDK-Verzeichnis.
On Windows you need to include the gl.h header for OpenGL 1.1 support and link against OpenGL32.lib.
Both are a part of the Windows SDK.Das neueste SDK lässt sich bei MS downloaden, es wird aber auch bereits eins mit
Visual-Studio mitinstalliert.How to get the GL library/headers?
http://stackoverflow.com/questions/3933027/how-to-get-the-gl-library-headers
-
glut.h macht bereits alles was man möglicherweise brauchen könnte:
#include "freeglut_std.h"
und diese wiederrum macht
#include <GL/gl.h> #include <GL/glu.h>
sowie das linken mit allen benötigten libs anmelden.
Es ist also egal - die beiden MS includes werden bei freeglut verwendet wenn
unter Windows kompiliert wird. Bei Apple werden andere Pfade verwendet.
Bei freeglut soll eine gewisse Plattformunabhängigkeit gegeben sein.Es wäre also sinnvoll und bequemer glut.h zu verwenden.
-
vielen dank für die Antworte merano.
Sicherheitshalber habe ich nun doch die dateien glu32.h und ähnliche heruntergeladen, damit alles so ist wie auf dem tutorial.
Nun ist der Linker wieder einmal unzufrieden mit mir. Der Compiler gibt keine Fehlermeldung.
Was habe ich nun wieder falsch gemacht?
Dies gibt der Linker an:
1>LINK : fatal error LNK1104: impossible d'ouvrir le fichier 'GLU32.obj'
-
sulky schrieb:
Was habe ich nun wieder falsch gemacht?
Dies gibt der Linker an:
1>LINK : fatal error LNK1104: impossible d'ouvrir le fichier 'GLU32.obj'Er sagt es doch: Nicht möglich die Datei 'GLU32.obj' zu öffnen.
Die Linkerprobleme hättest du mit dem von freeglut mitgelieferten Header vermutlich nicht gehabt.
-
Schon möglich, ich wollte einfach alles genau gleich machen wie es im Tutorial stand. Werde dies aber gleich ausprobieren.
Was muss ich denn jetzt machen?
Wo ist diese GLU32.obj datei? ,bzw. wo sollte SIe sein?
Woher bekomme ich die Datei?Oder ganz allgemen, wie löst man dieses Problem?
-
sulky schrieb:
Was muss ich denn jetzt machen?
Wo ist diese GLU32.obj datei? ,bzw. wo sollte SIe sein?
Woher bekomme ich die Datei?Unter Windows gibts im SDK nur eine GlU32.Lib. Möglicherweise wird irgendwo
"versehentlich" mit GlU32.obj gelinkt statt mit GlU32.Lib.Kann es sein, das es ein Beispiel aus der UNIX-Welt ist ?