2013-05-12 37 views
0

我有一个错误,我不知道如何解决。土壤未处理的异常在0x585727FF

我创建了一个简单的程序,用VS2012,为了测试土(土壤的网站示例代码):

#include "SOIL.h" 
#include <iostream> 
#include <glew.h> 
#include <freeglut.h> 

int main() { 
std::cout << "Started" << std::endl; 

/* load an image file directly as a new OpenGL texture */ 
GLuint tex_2d = SOIL_load_OGL_texture 
    (
    "img.png", 
    SOIL_LOAD_AUTO, 
    SOIL_CREATE_NEW_ID, 
    SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT 
    ); 

/* check for an error during the load process */ 
if(0 == tex_2d) 
{ 
    printf("SOIL loading error: '%s'\n", SOIL_last_result()); 
} 
} 

我得到的错误:

Unhandled exception at 0x585727FF (msvcr110d.dll) in imageLib.exe: 0xC0000005: Access violation reading location 0x00000000. 

任何帮助表示赞赏。谢谢。

+1

打开(在内存中的调试/异常菜单“时异常被抛出突破”),你可以得到堆栈跟踪,应提供更多信息。 – sje397 2013-05-12 12:33:14

+0

只需单步执行代码即可。断点应该带你到问题发生的地方。 – GenieWanted 2013-05-12 12:37:23

+0

谢谢你的回复。好吧,我想我打开了它。这是堆栈跟踪? https://docs.google.com/file/d/0B36QIOj3F-a3TzRVVEE3blNYYjg/edit?usp=sharing – Attaque 2013-05-12 12:44:55

回答

0

我所做的只是确保GL在加入Necrolis之前尝试使用GLuint。

如果您在库加载正确的,这个小例子应该没​​有错误(不显示任何内容,但运行显示GL和土壤的顺序:

#include "SOIL.h" 
#include <iostream> 
#include <glew.h> 
#include <freeglut.h> 

#define WINDOW_WIDTH 800 
#define WINDOW_HEIGHT 600 

void LoadTexture() { 
/* load an image file directly as a new OpenGL texture */ 
GLuint tex_2d = SOIL_load_OGL_texture 
    (
    "Data/img.png", 
    SOIL_LOAD_AUTO, 
    SOIL_CREATE_NEW_ID, 
    SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT 
    ); 

/* check for an error during the load process */ 
if(0 == tex_2d) 
{ 
    printf("SOIL loading error: '%s'\n", SOIL_last_result()); 
} 

// Typical Texture Generation Using Data From The Bitmap 
glBindTexture(GL_TEXTURE_2D, tex_2d); 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); 
} 

int main(int argc, char** argv) { 
std::cout << "Started" << std::endl; 

glutInit(&argc, argv); 
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA); 
glutInitWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT); 
glutInitWindowPosition(100, 100); 
glutCreateWindow("Tutorial 15"); 

glutSwapBuffers(); 

LoadTexture(); 

glEnable(GL_TEXTURE_2D);       // Enable Texture Mapping (NEW) 
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); 

glutMainLoop(); 

return 0; 
} 
0

我都面临着这些问题,所以很多次我觉得这是没有错误处理土壤库造成

加载图像数据时,路径可能是不正确的。在我的情况下,我写的路径像这种形式;

C:/Users/User/Pictures/texture.JPG 

但是当我改变像这条道路,有建筑项目时没有错误;)

file:///C:/Users/User/Pictures/texture.JPG