Access Violation OpenGl, VisualStudio 2008
Bierkistenschlepper (Level 2) - Jetzt verbinden
10.10.2011, aktualisiert 14:49 Uhr, 5363 Aufrufe, 3 Kommentare
Ich arbeite mich gerade mit der OpenGL SuperBible in die Grfikprogrammierung ein. Leider habe ich schon in Kapitel 2 ein Problem. Ich habe alles exakt genauso gemacht wie im Buch beschrieben und den Code habe ich auch direkt von der Homepage genommen und nicht etwa selbst getippt. Wenn ich das Projekt ausführen will, wirft VS eine nette Fehlermeldung:
Unhandled Exception at 0x00000000 in Triangle.exe: 0xC0000005: Access violation
Hat irgendjemand eine Ahnung, woher das kommt? Ich bin am Verzweifeln, denn ich muss einen Großteil dieses Buhs bis Semesterbeginn durchgearbeitet haben...
Ausführen tue ich Visual Studio 2008 auf meinem Mac in einer VM mit VirtualBox und Windows 7.
Hier mal der Code, wie gesagt ohne jede Änderung meinerseits. Es treten keine Fehler auf, der Code wird ja ausgeführt. Dann erscheint eine Konsole und dann ein zweiter Fensterrahmen, der aber leer bleibt.
Triangle.cpp
Our first OpenGL program that will just draw a triangle on the screen.
#include <GLTools.h> OpenGL toolkit
#include <GLShaderManager.h> Shader Manager Class
#ifdef __APPLE__
#include <glut/glut.h> OS X version of GLUT
#else
#define FREEGLUT_STATIC
#include <GL/glut.h> Windows FreeGlut equivalent
#endif
GLBatch triangleBatch;
GLShaderManager shaderManager;
///////////////////////////////////////////////////////////////////////////
Window has changed size, or has just been created. In either case, we need
to use the window dimensions to set the viewport and the projection matrix.
void ChangeSize(int w, int h)
{
glViewport(0, 0, w, h);
}
///////////////////////////////////////////////////////////////////////////
This function does any needed initialization on the rendering context.
This is the first opportunity to do any OpenGL related tasks.
void SetupRC()
{
Blue background
glClearColor(0.0f, 0.0f, 1.0f, 1.0f );
shaderManager.InitializeStockShaders();
Load up a triangle
GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f,
0.5f, 0.0f, 0.0f,
0.0f, 0.5f, 0.0f };
triangleBatch.Begin(GL_TRIANGLES, 3);
triangleBatch.CopyVertexData3f(vVerts);
triangleBatch.End();
}
///////////////////////////////////////////////////////////////////////////
Called to draw scene
void RenderScene(void)
{
Clear the window with current clearing color
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f };
shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
triangleBatch.Draw();
Perform the buffer swap to display back buffer
glutSwapBuffers();
}
/////////////////////////////////////////////////////////////////////////////
// Main entry point for GLUT based programs
int main(int argc, char* argv[])
{
gltSetWorkingDirectory(argv[0]);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);
glutInitWindowSize(800, 600);
glutCreateWindow("Triangle");
glutReshapeFunc(ChangeSize);
glutDisplayFunc(RenderScene);
GLenum err = glewInit();
if (GLEW_OK != err) {
fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err));
return 1;
}
SetupRC();
glutMainLoop();
return 0;
}
Hat irgendjemand eine Ahnung, woher das kommt? Ich bin am Verzweifeln, denn ich muss einen Großteil dieses Buhs bis Semesterbeginn durchgearbeitet haben...
Ausführen tue ich Visual Studio 2008 auf meinem Mac in einer VM mit VirtualBox und Windows 7.
Hier mal der Code, wie gesagt ohne jede Änderung meinerseits. Es treten keine Fehler auf, der Code wird ja ausgeführt. Dann erscheint eine Konsole und dann ein zweiter Fensterrahmen, der aber leer bleibt.
Triangle.cpp
Our first OpenGL program that will just draw a triangle on the screen.
#include <GLTools.h> OpenGL toolkit
#include <GLShaderManager.h> Shader Manager Class
#ifdef __APPLE__
#include <glut/glut.h> OS X version of GLUT
#else
#define FREEGLUT_STATIC
#include <GL/glut.h> Windows FreeGlut equivalent
#endif
GLBatch triangleBatch;
GLShaderManager shaderManager;
///////////////////////////////////////////////////////////////////////////
Window has changed size, or has just been created. In either case, we need
to use the window dimensions to set the viewport and the projection matrix.
void ChangeSize(int w, int h)
{
glViewport(0, 0, w, h);
}
///////////////////////////////////////////////////////////////////////////
This function does any needed initialization on the rendering context.
This is the first opportunity to do any OpenGL related tasks.
void SetupRC()
{
Blue background
glClearColor(0.0f, 0.0f, 1.0f, 1.0f );
shaderManager.InitializeStockShaders();
Load up a triangle
GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f,
0.5f, 0.0f, 0.0f,
0.0f, 0.5f, 0.0f };
triangleBatch.Begin(GL_TRIANGLES, 3);
triangleBatch.CopyVertexData3f(vVerts);
triangleBatch.End();
}
///////////////////////////////////////////////////////////////////////////
Called to draw scene
void RenderScene(void)
{
Clear the window with current clearing color
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f };
shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
triangleBatch.Draw();
Perform the buffer swap to display back buffer
glutSwapBuffers();
}
/////////////////////////////////////////////////////////////////////////////
// Main entry point for GLUT based programs
int main(int argc, char* argv[])
{
gltSetWorkingDirectory(argv[0]);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);
glutInitWindowSize(800, 600);
glutCreateWindow("Triangle");
glutReshapeFunc(ChangeSize);
glutDisplayFunc(RenderScene);
GLenum err = glewInit();
if (GLEW_OK != err) {
fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err));
return 1;
}
SetupRC();
glutMainLoop();
return 0;
}
3 Antworten
- LÖSUNG Bierkistenschlepper schreibt am 10.10.2011 um 17:45:16 Uhr
- LÖSUNG mrtux schreibt am 10.10.2011 um 23:45:49 Uhr
- LÖSUNG Bierkistenschlepper schreibt am 11.10.2011 um 10:58:52 Uhr
LÖSUNG 10.10.2011 um 17:45 Uhr
Hier noch das Log unten. Kann mir jemand sagen, wieso das Ding versucht auf die cryptbase.dll zuzugreifen? Ich habe Visual Studio per Torrent gesaugt, hoffe ich habe mir da nix eingefangen...
'Triangle.exe': Loaded 'C:\Users\Cornelius\Documents\Visual Studio 2008\Projects\Triangle\Debug\Triangle.exe', Symbols loaded.
'Triangle.exe': Loaded 'C:\Windows\System32\ntdll.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\kernel32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\KernelBase.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\opengl32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\msvcrt.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\advapi32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\sechost.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\rpcrt4.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\gdi32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\user32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\lpk.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\usp10.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\glu32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\ddraw.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\dciman32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\setupapi.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\cfgmgr32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\oleaut32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\ole32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\devobj.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\dwmapi.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\winmm.dll'
'Triangle.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.21022.8_none_96748342450f6aa2\msvcr90d.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\imm32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\msctf.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\uxtheme.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\VBoxOGL.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\VBoxOGLcrutil.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\ws2_32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\nsi.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\nlaapi.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\NapiNSP.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\pnrpnsp.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\mswsock.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\dnsapi.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\winrnr.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\VBoxOGLpackspu.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\VBoxOGLerrorspu.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\VBoxOGLfeedbackspu.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\VBoxOGLpassthroughspu.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\cryptbase.dll'
First-chance exception at 0x00000000 in Triangle.exe: 0xC0000005: Access violation.
Unhandled exception at 0x00000000 in Triangle.exe: 0xC0000005: Access violation.
The program '[1388] Triangle.exe: Native' has exited with code -1073741819 (0xc0000005).
'Triangle.exe': Loaded 'C:\Users\Cornelius\Documents\Visual Studio 2008\Projects\Triangle\Debug\Triangle.exe', Symbols loaded.
'Triangle.exe': Loaded 'C:\Windows\System32\ntdll.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\kernel32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\KernelBase.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\opengl32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\msvcrt.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\advapi32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\sechost.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\rpcrt4.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\gdi32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\user32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\lpk.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\usp10.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\glu32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\ddraw.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\dciman32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\setupapi.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\cfgmgr32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\oleaut32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\ole32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\devobj.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\dwmapi.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\winmm.dll'
'Triangle.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.21022.8_none_96748342450f6aa2\msvcr90d.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\imm32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\msctf.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\uxtheme.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\VBoxOGL.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\VBoxOGLcrutil.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\ws2_32.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\nsi.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\nlaapi.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\NapiNSP.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\pnrpnsp.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\mswsock.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\dnsapi.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\winrnr.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\VBoxOGLpackspu.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\VBoxOGLerrorspu.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\VBoxOGLfeedbackspu.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\VBoxOGLpassthroughspu.dll'
'Triangle.exe': Loaded 'C:\Windows\System32\cryptbase.dll'
First-chance exception at 0x00000000 in Triangle.exe: 0xC0000005: Access violation.
Unhandled exception at 0x00000000 in Triangle.exe: 0xC0000005: Access violation.
The program '[1388] Triangle.exe: Native' has exited with code -1073741819 (0xc0000005).
LÖSUNG 10.10.2011 um 23:45 Uhr
Hi !
Dir ist aber schon klar, dass die 3D Beschleunigung der Treiber (in den Guest Additions) von Virtualbox noch den Status "unstable" oder "beta" tragen...Warum eigentlich per Torrent gesaugt? Reicht zu Lernzwecken nicht auch die Express Edition? Soweit ich mich da grad noch erinnern kann, bekommt man die doch vom Hersteller kostenlos....
mrtux
Dir ist aber schon klar, dass die 3D Beschleunigung der Treiber (in den Guest Additions) von Virtualbox noch den Status "unstable" oder "beta" tragen...Warum eigentlich per Torrent gesaugt? Reicht zu Lernzwecken nicht auch die Express Edition? Soweit ich mich da grad noch erinnern kann, bekommt man die doch vom Hersteller kostenlos....
mrtux
LÖSUNG 11.10.2011 um 10:58 Uhr