我正在网上阅读一个教程,我知道我在某个地方做了一个非常初学者的语法错误,但VS 2010给了我非常模糊的错误描述,我在我的主程序中测试了这些功能,但它们可以工作但是从我的main调用这些类函数时,我一直得到error LNK2019: unresolved external symbol "public: __thiscall
的原因。
我的标题文件:
#ifndef SHADER_H
#define SHADER_H
#include <string>
#include <fstream>
#include <sstream>
#include <iostream>
#include <glew.h>; // Include glew to get all the required OpenGL headers
class Shader
{
public:
GLuint Program;
Shader(const GLchar* vertexPath, const GLchar* fragmentPath);
void Use();
};
#endif
我的Cpp文件:
#pragma once
#ifndef SHADER_H
#define SHADER_H
#include <string>
#include <fstream>
#include <sstream>
#include <iostream>
#include "Shader.h"
#include <glew.h>
#include "Shader.h"
class Shader
{
public:
GLuint Program;
//I've tried Shader(const GLchar* vertexPath, const GLchar* fragmentPath)
//instead of Shader::Shader
Shader::Shader(const GLchar* vertexPath, const GLchar* fragmentPath)
{
//generates shader
}
// Uses the current shader
void Shader::Use()
{
glUseProgram(this->Program);
}
};
#endif
错误来自: Main.cpp的
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include <iostream>
#include <glew.h>
//#define GLEW_STATIC
// GLFW
#include <glfw3.h>
// Other includes
#include "Shader.h"
int main()
{
Shader ourShader("shader.vs","shader.fs"); <-- Error here
// Game loop
while (!glfwWindowShouldClose(window))
{
// Draw the triangle
OurShader.Use(); <-- Error here
}
答案 0 :(得分:1)
您只需阅读一些基本的C ++教程或参考书。
SHADER_H
在头文件中定义。您的* .cpp文件未包含在编译您的代码应该是这样的。我没有构建代码。但只是对结构有所了解。
听到文件
#ifndef SHADER_H
#define SHADER_H
#include <string>
#include <fstream>
#include <sstream>
#include <iostream>
#include <glew.h>
class Shader
{
public:
GLuint Program;
Shader(const GLchar* vertexPath, const GLchar* fragmentPath);
void Use();
};
#endif
cpp文件
#include "Shader.h"
Shader::Shader(const GLchar* vertexPath, const GLchar* fragmentPath)
{
//generates shader
}
void Shader::Use()
{
glUseProgram(this->Program);
}
主要
int main()
{
Shader ourShader("shader.vs", "shader.fs");
while (!glfwWindowShouldClose(window))
{
OurShader.Use();
}
}