Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

OpenGL Einbettung in Visual Studio 2008 / 2010

Empfohlene Antworten

Veröffentlicht

Hallo,

also im Internet findet man ja tausend verschiedene Lösungsansätze, um OpenGL mit Visual C++ programmieren zu können.

Mein Problem ist: Ich bin mit den tausenden Anleitungen etwas überfordert.

Was ich bis jetzt schon gemacht habe: Ich habe mir glut runtergeladen, und die in den Visual Studio Ordner unter VC lib Ordner unter GL die glut32.lib reingetan. Die glut32.h in den Ordner include\GL.

Bei den Projekt selber hab ich die verschiedenen OpenGL lib Dateien im Linker eingebunden.

Visual Studio motzt ungefähr bei der Hälfte eines funktionierenden Code-Beispiels. Auch werden angeblich die Header Dateien nicht gefunden. Das Code-Beispiel stammt von einer Deutschen Übersetzung des Nehe Tutorials.

MFG derwunner

Bei mir klappt alles problemlos mit diesen paar includes:

#include <glew.h>                    // Header File For The GLaux Library
#include <gl\gl.h> // Header File For The OpenGL32 Library
#include <gl\glu.h> // Header File For The GLu32 Library
#include <gl\glaux.h> // Header File For The GLaux Library
#include <glext.h> // Header File For The GLaux Library
#include <glut.h> // Header File For The GLaux Library
#pragma comment(lib, "glew32.lib")
[/PHP]

glew32.dll und glut32.dll sollten noch in einem erreichbaren Ordner fürs Programm sein.

  • Autor

Hallo,

bei mir sieht das so aus:

#include <windows.h>

#include <gl\glu.h>

#include <gl\gl.h>

#include <gl\glaux.h>

Hast du noch zusätzliche libs, dlls eingebunden? Kann es vill auch da dran liegen, dass ich denn Ordner GL groß geschrieben habe?

MFG derwunner

Nein, übers Projekt gar nicht. Nur die eine Lib über den Pragma-Command. Die Groß-/Kleinschreibung dürfte keine Rolle spielen. Ich glaube eher, daß das Nehe-Tut. evtl. auf irgendwelche veralteten Releases aufsetzen könnte und das deshalb nicht klappt.

  • Autor

Hmm. Aber paar Anweisung sind ja gleich. Visual Studio meint aber bei jeder, dass sie nicht gefunden wird. Muss ich die Header Dateien jedes Mal ins Projekt mit einbinden?

Oder hast du noch irgendwas anderes außergewöhnliches mit eingebunden?

Auf jeden Fall mit den Header Dateien gehts bei mir nicht.

MFG derwunner

Mehr ist nicht eingebunden.

Du kannst noch probieren, bei den Settings->C/C++->Zusätzliche Includeverzeichnisse alle wichtigen Ordner hinzuzufügen, in denen etwas Relevantes steht.

Außerdem könntest Du mal den Vorkompilierten Header neu erstellen und danach wieder auf ...verwenden zurück schalten.

Bei Linker->Eingabe->Zusätzliche Abhängigkeiten alle Dlls und libs direkt eintragen.

Das habe ich zwar alles nicht gebraucht, aber vielleicht hilft´s in Deinem Fall weiter.

  • Autor

Alles klappt nicht. Da steht immer z. B. "glu.h Wird bei der Suche nach Verwendung des vorkompilierten Headers übersprungen"

Ich habe die glut.h ins Projekt eingebunden, ging nicht. Im Visual Studio VC\include Ordner auch nicht. Komischerwesie Header Dateien aus dem include Ordner, die vorher schon drin waren, gehen. Ich habe außerdem alle dll und libs die mit OpenGL zu tun haben bei weitere Abhängigkeiten eingebunden. Die libs waren ja auch schon vorher drin.

Es kommen trotzdem immer noch die gleichen Fehler.

MFG derwunner

  • Autor

Ne, daran liegts auch nicht. Dass glu und glut was anderes ist, weiß ich schon, war ja nur ein Beispiel für die Meldung, was bei allen Headern kommt.

Also die Berechtigungen sind im Vergleich zu Headern, die schon vorher im include Ordner waren die gleichen.

MFG derwunner

  • Autor

Also wenn ich diese Reihenfolge mache:


#include <stdafx.h>

#include <glut.h>

#include <windows.h>

#include <gl\gl.h>

#include <gl\glu.h>

#include <gl\glaux.h>

#include <glext.h>

dann gibt mir Visual Studio noch folgende Fehlermeldungen aus:

1 error C2381: 'exit': redefinition;_declspec(noreturn) unterscheidet sich. Fehler in Datei stdlib.h Zeile 371

2 warning C4985: "exit": Attribute sind in vorheriger Deklaration nicht vorhanden. Fehler in Datei stdlib.h in Zeile 371

3 fatal error C1083: Datei (Include) kann nicht geöffnet werden: "gl\glaux.h": No such file or directory

Das mit in Datei XY habe ich hinzugefügt, weil es in VS noch eine Spalte namens Datei gibt bei der Fehlerbeschreibung.

Das stdafx.h habe ich hinzugefügt, weil es anscheinend VS braucht.

Sind aber mal auf jeden Fall schonmal bedeutend weniger Fehlermeldung von ca. 100 auf 3 runter :uli

MFG derwunner

  • Autor

Also ich habe mir jetzt mal glaux und glext runtergeladen. glext macht keine Probleme. Das soll ein Header sein für hohe Grafik. Glaux ist speziell für Windows und angeblich auch veraltet. Naja, wenn ich das reinmache kommen haufenweise neue Fehlermeldungen.

MFG derwunner

3 fatal error C1083: Datei (Include) kann nicht geöffnet werden: "gl\glaux.h": No such file or directory
Du hast die Headerverzeichnisse immer noch nicht richtig eingerichtet. Du musst in den Projekteinstellungen festlegen, wo Headerdateien gesucht werden sollen. Ich hoffe, du hast die Header nicht irgendwo hin kopiert.

Das stdafx.h habe ich hinzugefügt, weil es anscheinend VS braucht.

VS "braucht" das nur, wenn im Projekt die Verwendung vorkompilierter Header eingestellt ist. Man kann das auch abstellen.

Sind aber mal auf jeden Fall schonmal bedeutend weniger Fehlermeldung von ca. 100 auf 3 runter :uli
Die Anzahl der Fehlermeldungen sagt nicht viel aus.
  • Autor

Nein, ich habe sie nicht irgendwo abgelegt, sondern im Visual Studio 9.0 Order unter VC\include\gl

Die Header werden ja auch jetzt gefunden. Jetzt kommen nur noch Konvertierungsfehler von verschiedenen MessageBoxW . Und dass beim Header glaux.h ein unerwartetes Token nach Präprozessorperdirektive - Zeilenvorschub erwartet.

Meine includes sehen jetzt so aus:


#include <gl\glut.h>

#include <windows.h>

#include <gl\gl.h>

#include <gl\glu.h>

#include <gl\glaux.h>

#include <gl\glext.h>

MFG derwunner

Jetzt kommen nur noch Konvertierungsfehler von verschiedenen MessageBoxW
Die genaue Fehlermeldung ist wichtig. Ich tippe darauf, dass du im Projekt als Zeichencodierung Unicode eingestellt hast. Die Windows-Funktionen wie MessageBox erwarten String-Parameter als Wide Character. Du könntest einfach auf Multi-Byte umstellen, falls du kein Unicode benutzen willst.
  • Autor

Also, folgende Fehlermeldungen kommen noch:


error C2381: 'exit': redefinition; _declspec(noreturn) unterscheidet sich Zeile 371

warning C4985: "exit": Attribute sind in vorheriger Deklaration nicht vorhaden. Zeile 371

warning C4067: Unerwartete Token nach Präprozessordirektive - Zeilenvorschub nicht erwartet. Zeile 5

error C2664: 'MessageBoxW': Konvertierung des Parameters 2 von 'const char[40]' in 'LPCWSTR' Zeile 111

error C2440: '=': 'const char[7]' kann nicht in 'LPCWSTR' konvertiert werden

error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char[7]' in 'LCPWSTR' nicht möglich

MFG derwunner

error C2381: 'exit': redefinition; _declspec(noreturn) unterscheidet sich Zeile 371

warning C4985: "exit": Attribute sind in vorheriger Deklaration nicht vorhaden. Zeile 371

Das bringt nicht viel ohne die Dateien. Kopier die Meldungen bitte aus "Output", nicht "Error List".

error C2664: 'MessageBoxW': Konvertierung des Parameters 2 von 'const char[40]' in 'LPCWSTR' Zeile 111

error C2440: '=': 'const char[7]' kann nicht in 'LPCWSTR' konvertiert werden

error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char[7]' in 'LCPWSTR' nicht möglich

Wie gesagt, entweder die Strings auf Wide-Character umstellen, oder das Projekt auf Multi-Byte.
  • Autor

Also das heißt ich müsste entweder im Projekt auf Multi-Byte umstellen, oder die ganzen Datentypen in Wide String ändern?

Wie geht das mit Multi-Byte? Hab schonmal danach gegogelt, aber ohne wirkliche Ergebnisse.

Und wozu die Output? Kann ich damit die Fehler in eine Textdatei speichern?

Sorry wenn euch manche Fragen komisch vorkommen, aber ich bin noch relativ neu in C++.

MFG derwunner

Wie geht das mit Multi-Byte? Hab schonmal danach gegogelt, aber ohne wirkliche Ergebnisse.
Project Properties

> Configuration Properties

> C/C++

> General

> Character Set --> Use Multi-Byte Character Set

Und wozu die Output?
Ich vermute, dass bei deinen Fehlermeldungen die Dateinamen fehlen, weil du sie aus der Error List kopierst. Im Output-Fenster sollten sie mit drin sein.

Sorry wenn euch manche Fragen komisch vorkommen, aber ich bin noch relativ neu in C++.
Dann solltest du dich erst einmal darum kümmern, dass du in den Grundlagen von C++ und der Bedienung deiner Entwicklungsumgebung sattelfest wirst, bevor du dich an OpenGL wagst.
  • Autor

Also mit Visual Studio 2008 arbeite ich jetzt schon ein Jahr. In C# habe ich bis jetzt noch nie sowas gebraucht.

Ähm ich habs versucht zu übersetzen, ich habs nämlich in deutsch. Hab überall gesucht, leider nicht gefunden -.-

MFG derwunner

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.