C++ 0x585727FF处的土壤未处理异常

C++ 0x585727FF处的土壤未处理异常,c++,visual-studio,soil,C++,Visual Studio,Soil,我有一个错误,我不知道如何解决 为了测试土壤,我使用VS2012创建了一个简单的程序(来自土壤网站的示例代码): 感谢您的帮助。谢谢。我所做的就是按照Necrolis的建议,在尝试使用GLuint之前确保GL已加载 如果已正确加载库,则此小示例应无错误运行(不显示任何内容,但显示GL和SOIL的顺序: #include "SOIL.h" #include <iostream> #include <glew.h> #include <freeglut.h> #

我有一个错误,我不知道如何解决

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


感谢您的帮助。谢谢。

我所做的就是按照Necrolis的建议,在尝试使用GLuint之前确保GL已加载

如果已正确加载库,则此小示例应无错误运行(不显示任何内容,但显示GL和SOIL的顺序:

#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;
}
#包括“SOIL.h”
#包括
#包括
#包括
#定义窗口宽度800
#定义窗口高度600
void LoadTexture(){
/*直接将图像文件作为新的OpenGL纹理加载*/
GLuint-tex\u 2d=土壤荷载\u OGL\u纹理
(
“Data/img.png”,
土壤负荷自动控制,
土壤\u创建\u新的\u ID,
土壤标志MIPMAPS土壤标志倒置土壤标志NTSC安全RGB土壤标志压缩至DXT
);
/*在加载过程中检查错误*/
如果(0==tex_2d)
{
printf(“土壤加载错误:'%s'\n',土壤上次结果());
}
//使用位图中的数据生成典型纹理
glBindTexture(GL_TEXTURE_2D,tex_2D);
glTexParameteri(GL_纹理2D、GL_纹理最小过滤器、GL_线性);
glTexParameteri(GL_纹理2D、GL_纹理MAG_过滤器、GL_线性);
}
int main(int argc,字符**argv){

std::cout我已经多次遇到这些问题。我认为这是由于缺少错误处理土壤库造成的

加载图像数据时,路径可能不正确

C:/Users/User/Pictures/texture.JPG
但是,当我这样更改此路径时,在构建项目时不会出现错误;)


启用“引发异常时中断”(在内存中的“调试/异常”菜单中)您可以获得堆栈跟踪,它应该提供更多信息。只需逐步完成代码。断点应该会将您带到问题发生的那一行。谢谢您的回复。好的,我想我已经打开了它。这是堆栈跟踪吗?@Attaque:soil似乎无法获取gl ext字符串,如果您在创建之前使用OGL,通常会发生这种情况在线程上添加上下文。谢谢Necrolis。我在另一个项目中包含了这段代码,它按预期工作。
#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;
}
C:/Users/User/Pictures/texture.JPG
file:///C:/Users/User/Pictures/texture.JPG