c++ atioglxx.pdb 包含查找模块 atioglxx.dll 源代码所需的调试信息

标签 c++

我不断得到

atioglxx.pdb not loaded error

抛出的异常是

Unhandled exception at 0x61DA5D3A (atioglxx.dll) in opengl_fps.exe: 0xC0000005: Access violation writing location 0x00000000. occurred

这是在我添加了一些用于加载一些着色器和绘制三角形的代码之后开始发生的

我已经尝试过更新我的 amd 驱动程序,清理解决方案并重建,重新启动 visual studio,重新启动我的电脑,然后用谷歌搜索

加载着色器的代码

GLuint vsid = glCreateShader(GL_VERTEX_SHADER);\\exception thrown here
glShaderSource(vsid, 1, &vs, NULL);
glCompileShader(vsid);

GLint* success = 0;
GLchar infolog[512];

glGetShaderiv(vsid, GL_COMPILE_STATUS, success);
if (!success)
{
    glGetShaderInfoLog(vsid, 512, NULL, infolog);
    std::cout << "shader vs cant compile\n" << infolog << std::endl;
}
GLuint fsid = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fsid, 1, &fs, NULL);
glCompileShader(fsid);

glGetShaderiv(fsid, GL_COMPILE_STATUS, success);

if (!success)
{
    glGetShaderInfoLog(vsid, 512, NULL, infolog);
    std::cout << "shader fs cant compile\n" << infolog << std::endl;
}
GLuint shaderprogram = glCreateProgram();
glAttachShader(shaderprogram, vsid);
glAttachShader(shaderprogram, fsid);
glLinkProgram(shaderprogram);

glGetProgramiv(shaderprogram, GL_LINK_STATUS, success);

if (!success)
{
    glGetShaderInfoLog(shaderprogram, 512, NULL, infolog);
    std::cout << "shader program" << infolog;
}
glDeleteShader(vsid);
glDeleteShader(fsid);
GLfloat vertices[] = {
    -0.5f,-0.5f,0.0f,
    0.5f,-0.5f,0.0f,
    0.0f,0.5f,0.0f
};

GLuint vbo, vao;
glGenVertexArrays(1, &vao);
glGenBuffers(1, &vbo);

glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);

glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GL_FLOAT), (GLvoid*)0);
glEnableVertexAttribArray(0);

glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindVertexArray(0);

渲染代码

win.update();
glUseProgram(shaderprogram);
glBindVertexArray(vao);
glDrawArrays(GL_TRIANGLES, 0, 3);
glBindVertexArray(0);
win.swapbuffers();

最佳答案

glGetShaderiv 的第 3 个参数需要 GLint 的地址,您将空指针作为要使用的地址传入。

改变:

GLint* success = 0;
GLchar infolog[512];

glGetShaderiv(vsid, GL_COMPILE_STATUS, success);

收件人:

GLint success = 0;
GLchar infolog[512];

glGetShaderiv(vsid, GL_COMPILE_STATUS, &success);

还有其他类似的地方。

关于c++ atioglxx.pdb 包含查找模块 atioglxx.dll 源代码所需的调试信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55348538/

相关文章:

c++ - 在Visual Studio 2012中重建时出现奇怪的链接错误

c++ - 垫子的 OpenCV 垫子

c++ - 是什么导致十六进制到二进制转换器(C++ 代码)中出现这些奇怪的输出?

java - 能否在 C/C++ 中提取 Java ZipEntry

java - 在 CNI/C++ 代码中实例化模板类

c++ - 机器 epsilon - C++ 中的 long double

c++ - 如何在非透明窗口中具有透明小部件?

C++,泄漏与否?可以做什么

c++ - 在 ARM 上混合使用 uint64_t 和 long 会产生奇怪的结果

c++ - 使用 C++ 在 ncurses 中打印子菜单的问题