MSVC-2008,GTK+ mit GtkGlExt+OpenGL, (code inside!)
-
Hallo zusammen
,
ich versuche nun schon seit Tagen mein MSVC2008 mit GTK+, GtkGlExt und OpenGl zu verheiraten aber es will einfach nicht klappen. Es ist kein Problem ein OpenGL Projekt mit dem Studio zu erstellen, auch ein GTK+ Projekt funktioniert problemlos.
Aber ein GTK+ Projekt mit OpenGL (und natürlich GtkGlExt) will einfach nicht laufen.
Ich habe es schon soweit bekommen daß das Testprojekthttp://oracle.bridgewayconsulting.com.au/~danni/misc/gtkglext-example.c
compiliert wird, am Ende kommt jedoch wieder eine Fehlermeldung.
Lib's und DLL's etc. habe ich alle in den entsprechenden Verzeichnissen.
Ich habe dann von Code::Blocks gehört und diesen installiert, mit dieser IDE klappt auch alles hervorragend. Da ich aber das Studio schon seit Version 4 gewohnt bin ist Code::Blocks indiskutabel.Ich nutze WinXP, MSVC 2008 original, GTK+ und Glade 3.6.7.
Könnt Ihr mir irgendwie helfen, ich bräuchte eine Step By Step-Anleitung wie ich das Studio 2008, GTK+ undGtkGlExt mitsamt OpenGL in einem Projekt vereine, was ich im Studio wo einstellen muß etc.
Ich suche und (ver)-suche schon lange, das ist keine Bitte meine Hausaufgaben zu machen aber ich komme einfach nicht weiter.Ich bedanke mich schon jetzt für Eure Hilfe
.
DucklerP.S.: Ich möchte kein gtkmm nutzen!
-
...weiß denn wirklich niemand Rat?!
Viele Grüße,
Duckler
-
..... habe ich die Frage irgendwie falsch gestellt?
Gruß,
Duckler
-
Hallo,
duckler schrieb:
..... habe ich die Frage irgendwie falsch gestellt?
das wohl nicht, aber für potenzielle Helfer, die zwar deinen Code betrachten können, aber gerade nicht die Möglichkeit haben, in deiner Umgebung:
WinXP, MSVC 2008 original, GTK+ und Glade 3.6.7
zu kompilieren, wäre es hilfreich, die Fehlermeldung zu sehen (da der Code kompiliert, hilft er in dieser Situation beim Erkennen eines "Nicht-Compiler-Fehlers" nicht), denn oft reicht auch das den Forenteilnehmern, um Hinweise zur Lösung zu geben.
MfG,
Probe-Nutzer
-
Hi Probe-Nutzer,
Natürlich hast Du recht, ich hoffe nur daß ich jetzt nicht zuviel des Guten getan habe, hier kommt alles.
Ich poste mal den Code inclusive der Fehlermeldung!Hier mein Code:
#include <gtk/gtk.h> #include <gtk/gtkgl.h> #include <SDL/SDL.h> #include <SDL/SDL_opengl.h> #include <math.h> #ifdef _WIN32 #undef main #endif float boxv[][3] = { { -0.5, -0.5, -0.5 }, { 0.5, -0.5, -0.5 }, { 0.5, 0.5, -0.5 }, { -0.5, 0.5, -0.5 }, { -0.5, -0.5, 0.5 }, { 0.5, -0.5, 0.5 }, { 0.5, 0.5, 0.5 }, { -0.5, 0.5, 0.5 } }; #define ALPHA 0.5 static float ang = 30.; static gboolean expose (GtkWidget *da, GdkEventExpose *event, gpointer user_data) { GdkGLContext *glcontext = gtk_widget_get_gl_context (da); GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (da); if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext)) { g_assert_not_reached (); } /* draw in here */ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); glRotatef (ang, 1, 0, 1); // glRotatef (ang, 0, 1, 0); // glRotatef (ang, 0, 0, 1); glShadeModel(GL_FLAT); #if 0 glBegin (GL_QUADS); glColor4f(0.0, 0.0, 1.0, ALPHA); glVertex3fv(boxv[0]); glVertex3fv(boxv[1]); glVertex3fv(boxv[2]); glVertex3fv(boxv[3]); glColor4f(1.0, 1.0, 0.0, ALPHA); glVertex3fv(boxv[0]); glVertex3fv(boxv[4]); glVertex3fv(boxv[5]); glVertex3fv(boxv[1]); glColor4f(0.0, 1.0, 1.0, ALPHA); glVertex3fv(boxv[2]); glVertex3fv(boxv[6]); glVertex3fv(boxv[7]); glVertex3fv(boxv[3]); glColor4f(1.0, 0.0, 0.0, ALPHA); glVertex3fv(boxv[4]); glVertex3fv(boxv[5]); glVertex3fv(boxv[6]); glVertex3fv(boxv[7]); glColor4f(1.0, 0.0, 1.0, ALPHA); glVertex3fv(boxv[0]); glVertex3fv(boxv[3]); glVertex3fv(boxv[7]); glVertex3fv(boxv[4]); glColor4f(0.0, 1.0, 0.0, ALPHA); glVertex3fv(boxv[1]); glVertex3fv(boxv[5]); glVertex3fv(boxv[6]); glVertex3fv(boxv[2]); glEnd (); #endif glBegin (GL_LINES); glColor3f (1., 0., 0.); glVertex3f (0., 0., 0.); glVertex3f (1., 0., 0.); glEnd (); glBegin (GL_LINES); glColor3f (0., 1., 0.); glVertex3f (0., 0., 0.); glVertex3f (0., 1., 0.); glEnd (); glBegin (GL_LINES); glColor3f (0., 0., 1.); glVertex3f (0., 0., 0.); glVertex3f (0., 0., 1.); glEnd (); glBegin(GL_LINES); glColor3f (1., 1., 1.); glVertex3fv(boxv[0]); glVertex3fv(boxv[1]); glVertex3fv(boxv[1]); glVertex3fv(boxv[2]); glVertex3fv(boxv[2]); glVertex3fv(boxv[3]); glVertex3fv(boxv[3]); glVertex3fv(boxv[0]); glVertex3fv(boxv[4]); glVertex3fv(boxv[5]); glVertex3fv(boxv[5]); glVertex3fv(boxv[6]); glVertex3fv(boxv[6]); glVertex3fv(boxv[7]); glVertex3fv(boxv[7]); glVertex3fv(boxv[4]); glVertex3fv(boxv[0]); glVertex3fv(boxv[4]); glVertex3fv(boxv[1]); glVertex3fv(boxv[5]); glVertex3fv(boxv[2]); glVertex3fv(boxv[6]); glVertex3fv(boxv[3]); glVertex3fv(boxv[7]); glEnd(); glPopMatrix (); if (gdk_gl_drawable_is_double_buffered (gldrawable)) gdk_gl_drawable_swap_buffers (gldrawable); else glFlush (); gdk_gl_drawable_gl_end (gldrawable); return TRUE; } static gboolean configure (GtkWidget *da, GdkEventConfigure *event, gpointer user_data) { GdkGLContext *glcontext = gtk_widget_get_gl_context (da); GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (da); if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext)) { g_assert_not_reached (); } glLoadIdentity(); glViewport (0, 0, da->allocation.width, da->allocation.height); glOrtho (-10,10,-10,10,-20050,10000); glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glScalef (10., 10., 10.); gdk_gl_drawable_gl_end (gldrawable); return TRUE; } static gboolean rotate (gpointer user_data) { GtkWidget *da = GTK_WIDGET (user_data); ang++; gdk_window_invalidate_rect (da->window, &da->allocation, FALSE); gdk_window_process_updates (da->window, FALSE); return TRUE; } int main (int argc, char **argv) { GtkWidget *window; GtkWidget *da; GdkGLConfig *glconfig; gtk_init (&argc, &argv); gtk_gl_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); da = gtk_drawing_area_new (); gtk_container_add (GTK_CONTAINER (window), da); g_signal_connect_swapped (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); gtk_widget_set_events (da, GDK_EXPOSURE_MASK); gtk_widget_show (window); /* prepare GL */ glconfig = gdk_gl_config_new_by_mode ( GDK_GL_MODE_RGB | GDK_GL_MODE_DEPTH | GDK_GL_MODE_DOUBLE); if (!glconfig) { g_assert_not_reached (); } if (!gtk_widget_set_gl_capability (da, glconfig, NULL, TRUE, GDK_GL_RGBA_TYPE)) { g_assert_not_reached (); } g_signal_connect (da, "configure-event", G_CALLBACK (configure), NULL); g_signal_connect (da, "expose-event", G_CALLBACK (expose), NULL); gtk_widget_show_all (window); g_timeout_add (1000 / 60, rotate, da); gtk_main (); }
Das ist die Ausgabe kurz nach dem starten (während des Buildprozesses):
------ Erstellen gestartet: Projekt: GTK_Test_Projekt, Konfiguration: Debug Win32 ------
Kompilieren...
stdafx.cpp
Kompilieren...
GTK_Test_Projekt.cpp
Manifest in Ressourcen wird kompiliert...
Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
Copyright (C) Microsoft Corporation. All rights reserved.
Verknüpfen...
LINK : E:\WORKING\MISC\GTK\GTK_Test_Projekt\Debug\GTK_Test_Projekt.exe wurde nicht gefunden oder beim letzten inkrementellen Linkvorgang nicht erstellt; vollständiger Link wird durchgeführt.
Das Manifest wird eingebettet...
Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
Copyright (C) Microsoft Corporation. All rights reserved.**Wenn ich diesen Code ausführe wird kompiliert und verknüpft, aber kurz vor dem Start erscheint ein Dialog:
**Unbehandelte Ausnahme bei 0x00019fc0 in GTK_Test_Projekt.exe: 0xC0000005:
Zugriffsverletzung beim Lesen an Position 0x00019fc0.
**Das ist die komplette Kompilerausgabe:
**"GTK_Test_Projekt.exe": "E:\WORKING\MISC\GTK\GTK_Test_Projekt\Debug\GTK_Test_Projekt.exe" geladen, Symbole wurden geladen.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\ntdll.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\kernel32.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\libgtk-win32-2.0-0.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\libgdk_pixbuf-2.0-0.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\libgio-2.0-0.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\libglib-2.0-0.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\advapi32.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\rpcrt4.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\secur32.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\msvcrt.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\ole32.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\gdi32.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\user32.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\shell32.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\shlwapi.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\ws2_32.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\ws2help.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\libgmodule-2.0-0.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\libgobject-2.0-0.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\libgthread-2.0-0.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\zlib1.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\dnsapi.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\libpng14-14.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\libgdk-win32-2.0-0.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\libcairo-2.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\libfontconfig-1.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\libexpat-1.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\freetype6.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\msimg32.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\libpango-1.0-0.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\libpangocairo-1.0-0.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\libpangoft2-1.0-0.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\libpangowin32-1.0-0.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\imm32.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\libatk-1.0-0.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\comctl32.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\comdlg32.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\system32\winspool.drv" wurde geladen
"GTK_Test_Projekt.exe": "C:\Programme\Kaspersky Lab\Kaspersky Internet Security 2010\mzvkbd3.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\Programme\Kaspersky Lab\Kaspersky Internet Security 2010\kloehk.dll" wurde geladen
"GTK_Test_Projekt.exe": "C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll" wurde geladen
Eine Ausnahme (erste Chance) bei 0x00019fc0 in GTK_Test_Projekt.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00019fc0.
Unbehandelte Ausnahme bei 0x00019fc0 in GTK_Test_Projekt.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00019fc0.
Das Programm "[5124] GTK_Test_Projekt.exe: Systemeigen" wurde mit Code 0 (0x0) beendet.Ich hoffe das ist aussagekräftig und nicht zuviel!
Vielen Dank daß Ihr Euch die Mühe macht,
hoffentlich könnt Ihr mir helfenDuckler