gpt4 book ai didi

c++ - 使用 Visual Studio 2012 时 OpenGL 的调试问题

转载 作者:太空宇宙 更新时间:2023-11-04 13:57:53 25 4
gpt4 key购买 nike

我在 Visual Studio 2012 中调试 OpenGL 代码时遇到问题

Error   3   error LNK1120: 1 unresolved externals

Error 2 error LNK2019: unresolved external symbol _LoadShaders referenced in function "void __cdecl init(void)" (?init@@YAXXZ) C:\Users\New User\Documents\OpenGl\Lesson1_1test\Lesson1_1test\triangles.obj Lesson1_1test

这是我的代码,它来自OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.3 (8th Edition)

//
//
// triangles.cpp
//
//

#include <iostream>
using namespace std;

#include "vgl.h"
#include "LoadShaders.h"

enum VAO_IDs {Triangles, NumVAOs};
enum Buffer_IDs {ArrayBuffer, NumBuffers};
enum Attrib_IDs { vPosition = 0};

GLuint VAOs[NumVAOs];
GLuint Buffers[NumBuffers];

const GLuint NumVertices = 6;

//--init

void
init(void)
{
glGenVertexArrays(NumVAOs, VAOs);
glBindVertexArray(VAOs[Triangles]);

GLfloat vertices[NumVertices][2] = {
{-0.90, -0.90},
{0.85, -0.90},
{-0.90, 0.85},
{0.90, -0.85},
{0.90, 0.90},
{-8.50, 0.90}
};

glGenBuffers(NumBuffers, Buffers);
glBindBuffer(GL_ARRAY_BUFFER, Buffers[ArrayBuffer]);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);

ShaderInfo shaders[] = {{GL_VERTEX_SHADER, "triangles.vert"}, { GL_FRAGMENT_SHADER, "triangles.frag"},{ GL_NONE, NULL}};

GLuint program = LoadShaders(shaders);
glUseProgram(program);

glVertexAttribPointer(vPosition, 2, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0));

glEnableVertexAttribArray(vPosition);
}

//Display

void
display(void)
{
glClear(GL_COLOR_BUFFER_BIT);

glBindVertexArray(VAOs[Triangles]);

glDrawArrays(GL_TRIANGLES, 0, NumVertices);

glFlush();
}


//main

int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA);
glutInitWindowPosition(512,512);
glutInitContextVersion(4,3);
glutInitContextProfile(GLUT_CORE_PROFILE);
glutCreateWindow(argv[0]);

if(glewInit()) {
cerr << "Unable to initialize GLEW ... exiting " << endl;
exit(EXIT_FAILURE);
}

init();

glutDisplayFunc(display);

glutMainLoop();
}

最佳答案

您需要确保将 opengl 目录添加到您的查找路径目录中。在 VS2010 中,对话框如下所示: Add directories to lookup paths

在 VS2012 中,对话框如下所示: Add directories to lookup paths

在两者中,您都可以通过转到项目属性 >> VC++ 目录来访问它们

根据以下内容添加位置:

  • Bin目录(例如包含dll文件)添加到可执行目录
  • include目录(包含.h文件)添加到include目录
  • library目录(包含.lib文件)添加到library目录
  • source目录(包含.cpp文件)添加到source directories

referenceexclude 目录您可以单独保留,除非您明确需要更改它们。

希望这对您有所帮助,但如果您需要更多信息,请告诉我!:)

关于c++ - 使用 Visual Studio 2012 时 OpenGL 的调试问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20629740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com