mikrocontroller.net

Forum: PC-Programmierung undefined reference to gtk_gl_init


Autor: KidMoritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Spezialisten,

ich spiele seit kurzem etwas mit dem GTK herum.
Ich habe nun CodeBeispiele gefunden, welche OpenGL eingebunden haben.
Ich habe alle Header, welche in diesem Code angegeben sind eingebunden.

Leider schlaegt die GL-Initialisierung fehl.
Die Initialisierung erfolgt ueber:
 gtk_gl_init (int    *argc,char ***argv); 

Doch leider bekomme ich immer wieder die Meldung:
undefined reference to gtk_gl_init

Ich programmiere in C auf Windows mit Code::Blocks


Kann jemand helfen.

KidMoritz

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Fehlermeldung ist eine Linkerfehlermeldung, die besagt, daß Du die 
Library, die diese Funktion enthält, nicht zu Deinem Projekt dazulinkst.

Autor: KidMoritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich mich eben richtig informiert habe, haette ich da "glut" als 
opengl lib. Wenn ich das richtig verstehe.
glut wird, wie ich gelesen habe, aber nicht weiterentwickelt.

Welche lib kann ich denn da noch verwenden?

Autor: Jean G. (chivas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
GLUT wird zwar nicht mehr weiterentwickelt, eignet sich aber durchaus 
noch zum Erlernen der OpenGL. Ein Großteil der Dokumentation und 
öffentlich zugänglichen Code Beispiele, wie deins wahrscheinlich auch, 
basiert ohnehin auf der 1er und 2er Version von OpenGL.
Will man State of the Art und hierbei insbesondere größere Projekte 
programmieren, greift man in dem Fall auf die nativen Window Manager 
zurück, also XGL und WGL beispielsweise.
Gerade in Bezug auf GTK könntest du dir noch die GTK GL Extension 
(http://projects.gnome.org/gtkglext/", GtkGlExt googlen) anschauen. 
Diese API wird meines Wissens nach auch noch aktuell weiterentwickelt 
und ist zudem eng mit GTK verknüpft. Dafür gibt es auch gute 
Codebeispiele, die einen den Einstieg erleichtern.

Autor: KidMoritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jean G.

die ganzen Dateien der GtkGlExt habe ich in die zugehoerigen Ordner von 
Code::Blocks kopiert.
Reichen diese aus um OpenGl nutzen zu koennen?

In den Linkersettings habe ich den Pfad fuer die Glut32.lib angegeben.

Aber das scheint noch nicht zu reichen.
Wie kann ich herrausfinden, welche lib mir die Funktionen bereitstellt, 
welche ich brauche?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sollte eigentlich in der Dokumentation der Funktionen stehen. 
Ansonsten wirst Du Dir die Libraries ansehen müssen, bei MS-Compilern 
sollte das mit dumpbin gehen.

Autor: KidMoritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So nun funktioniert es. Ich denke, dass ich die GTK GL Extension nun 
richtig eingebunden habe.
Da hatten noch einige Libraries gefehlt.

Fuer interessenten:

Die Funktion
gtk_gl_init
  ist zu finden in der

libgtkglext-win32-1.0.dll.a

Da ich Glut nicht brauche - Greife ich da auf die WGL/XGL zu???
In dem kleinen Beispiel ist die
#include <windows.h>
 eingebunden.

Waere ich plattformunabhaengig, wenn ich Glut oder auch z.B. Mesa 
verwenden wuerde?

Ist es ueberhaupt sinnvoll sich mit GTK auf diese Art der Fenster- und 
Grafikprogrammierung tiefergehend einzulassen?
Im Moment kann ich nur in C programmieren.


Danke und Gruss

Autor: Jean G. (chivas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Waere ich plattformunabhaengig, wenn ich Glut oder auch z.B. Mesa
>verwenden wuerde?
>
>Ist es ueberhaupt sinnvoll sich mit GTK auf diese Art der Fenster- und
>Grafikprogrammierung tiefergehend einzulassen?
>Im Moment kann ich nur in C programmieren.

OpenGL ist per se plattformunabhängig. Problem ist die Verbindung 
zwischen OpenGL und dem zugrunde liegenden Betriebssystem. Hier nimmt 
dir GTK einiges an Arbeit ab, beispielsweise die Erstellung eines 
Renderkontexts oder auch Pufferverwaltung. GLUT ist ebenfalls 
plattformunabhängig (wobei der Begriff Plattformunabhängigkeit etwas 
irreführend ist), SDL ebenso. Wie sinnvoll das Ganze ist, hängt von 
deinem angestrebten Ziel ab bzw. was du programmieren möchtest.
Mit der GTK (GLUT/SDL/...) Variante kannst du ein sehr großes Spektrum 
abdecken, da die GtkGlExt sich eben nur um ein paar grundlegende Dinge 
kümmert und du danach ohnehin (etwas eingeschränkt) direkt die OpenGL 
Funktionen nutzt.
Für den Anfang kann man sich mit diesen APIs auf Monate beschäftigen und 
respektable Ergebnisse erzielen, dann bei Bedarf auf andere Varianten 
umsteigen (GLX, WGL, AGL ...). Sie erleichtern einen den Einstieg, da 
man sich ersteinmal nicht um die Verbindung zwischen OpenGL und 
Betriebssystem kümmern muss, sondern man sich mit der OpenGL und deren 
Mathematik auseinandersetzen kann.
Letztendlich hängt es von deinen Plänen ab.

>Da ich Glut nicht brauche - Greife ich da auf die WGL/XGL zu???
>In dem kleinen Beispiel ist die
>
>#include <windows.h>
>
>eingebunden.

WGL (Windows Graphics Library)

Autor: KidMoritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke fuer deine umfangreiche Erlaeuterung zu diesem Thema.

>Wie sinnvoll das Ganze ist, hängt von
>deinem angestrebten Ziel ab bzw. was du programmieren möchtest.

Spieleprogrammierung wirds wohl eher nicht werden.
Bin mehr Technikversiert.
Maschinenbau-Bedienpanels/Visualisierung von 
Kenngroessen/Bildverarbeitung o.ae.so in diese Richtung moechte ich 
meine Reise antreten.
Wahrscheinlich gibt es fuer solche Anwendungen andere Moeglichkeiten, 
aber da habe ich bisher noch keinen Einblick.
Und einen HighEnd 3D Renderer braucht man da sicher auch nicht.
Evtl. hats du da noch paar Tipps oder Hinweise dazu.

Aber erstmal vielen Danke fuer deine Worte.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
KidMoritz schrieb:
> Danke fuer deine umfangreiche Erlaeuterung zu diesem Thema.
>
>>Wie sinnvoll das Ganze ist, hängt von
>>deinem angestrebten Ziel ab bzw. was du programmieren möchtest.
>
> Spieleprogrammierung wirds wohl eher nicht werden.
> Bin mehr Technikversiert.
> Maschinenbau-Bedienpanels/Visualisierung von
> Kenngroessen/Bildverarbeitung o.ae.so in diese Richtung moechte ich
> meine Reise antreten.

Ob du da wirklich mit OpenGL glücklich wirst, ist die Frage. OpenGL ist 
doch eher low-level. Für derartige Visualisierungen gibt es 
Bibliotheken, die die für sowas benötigte Funktionialität auf höherem 
Level zur Verfügung stellen. Die wiederum können dann intern auf 
low-level-Frameworks wie z.B. OpenGL aufsetzten.

Autor: KidMoritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Für derartige Visualisierungen gibt es
>Bibliotheken, die die für sowas benötigte Funktionialität auf höherem
>Level zur Verfügung stellen.

Welche Bibliotheken sind das.
Werden die von Windows schon bereitgestellt?
Oder meinst du MESA bzw. Cairo in der Art.
Oder sind die auch in GtkGlExt?

KidMoritz

Autor: KidMoritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok.

Ich denke, dass ich es so weit verstanden habe.


>Für derartige Visualisierungen gibt es
>Bibliotheken, die die für sowas benötigte Funktionialität auf höherem
>Level zur Verfügung stellen. Die wiederum können dann intern auf
>low-level-Frameworks wie z.B. OpenGL aufsetzten.

Über die GtkGlExt (HighLevleBibliotheken) greife ich auf die LowLevel 
GrafikBibliotheken von OpenGl zu.


"GTK+ uses the Cairo drawing API" ist das das gleiche Prinzip?
HighLevel (GTK) -> LowLevel (Cairo)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.