VS 2010 C ++错误LNK2019:未解析的外部符号“public:__ thishisall

时间:2015-10-06 06:35:55

标签: c++ visual-studio-2010

我正在网上阅读一个教程,我知道我在某个地方做了一个非常初学者的语法错误,但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

    }

1 个答案:

答案 0 :(得分:1)

您只需阅读一些基本的C ++教程或参考书。

  • * .cpp文件
  • 不需要标题分级
  • 无需在* .cpp文件中再次定义类
  • * .h文件中的所有包含文件都在* .cpp文件中提供
  • Becaue 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();
    }
}