跑openGL例程,声明string 类型变量会出现符号无法解析,改为const char *后成功编译

声明string 类型变量会出现符号无法解析,改为const char *后成果编译

https://learnopengl-cn.github.io/01%20Getting%20started/05%20Shaders/ opengl教程时,使用vs2017,只要声明string变量,就出现符号无法解析,请各位大神帮忙分析,谢谢!(此处只附上.h头文件)

#pragma once
#ifndef SHADER_H
#define SHADER_H

#include"glad.h" // 包含glad来获取所有的必须OpenGL头文件
//#include <string>
#include <fstream>
#include <sstream>
#include <iostream>

using namespace std;

class Shader
{
public:
    int ID;
    int fragment;
    int vertex;


    // constructor generates the shader on the fly
    // ------------------------------------------------------------------------
    Shader()
    {

        const char* vShaderCode = "#version 330 core\n"
            "layout (location = 0) in vec3 aPos;\n"// 位置变量的属性位置值为 0 
            "layout (location = 1) in vec3 aColor;"// 颜色变量的属性位置值为 1
            "out vec3 ourColor;"// 向片段着色器输出一个颜色
            "void main()\n"
            "{\n"
            "   gl_Position = vec4(aPos, 1.0);\n"
            "   ourColor = aColor;\n "
            "}\0";
        string ss = "234";
        const char * fShaderCode = "#version 330 core\n"
            "out vec4 FragColor;\n"
            "in vec3 ourColor;"
            "void main()\n"
            "{\n"
            "   FragColor = vec4(ourColor, 1.0);\n"
            "}\n\0";

        // 2. compile shaders
        ;
        // vertex shader
        vertex = glCreateShader(GL_VERTEX_SHADER);
        glShaderSource(vertex, 1, &vShaderCode, NULL);
        glCompileShader(vertex);
        const char* a = "VERTEX";

        checkCompileErrors(vertex, "VERTEX");
        // fragment Shader
        fragment = glCreateShader(GL_FRAGMENT_SHADER);
        glShaderSource(fragment, 1, &fShaderCode, NULL);
        glCompileShader(fragment);
        //checkCompileErrors(fragment, "FRAGMENT");
        // shader Program
        ID = glCreateProgram();
        glAttachShader(ID, vertex);
        glAttachShader(ID, fragment);
        glLinkProgram(ID);
        //checkCompileErrors(ID, "PROGRAM");
        // delete the shaders as they're linked into our program now and no longer necessary
        glDeleteShader(vertex);
        glDeleteShader(fragment);
    }
    // activate the shader

    void use()
    {
        glUseProgram(ID);
    }

    void checkCompileErrors(unsigned int shader, const char * type)
    {
        int success;
        char infoLog[1024];
        if (type != "PROGRAM")
        {
            glGetShaderiv(shader, GL_COMPILE_STATUS, &success);
            if (!success)
            {
                glGetShaderInfoLog(shader, 1024, NULL, infoLog);
                std::cout << "ERROR::SHADER_COMPILATION_ERROR of type: " << type << "\n" << infoLog << "\n -- --------------------------------------------------- -- " << std::endl;
            }
        }
        else
        {
            glGetProgramiv(shader, GL_LINK_STATUS, &success);
            if (!success)
            {
                glGetProgramInfoLog(shader, 1024, NULL, infoLog);
                std::cout << "ERROR::PROGRAM_LINKING_ERROR of type: " << type << "\n" << infoLog << "\n -- --------------------------------------------------- -- " << std::endl;
            }
        }
    }

};

#endif

先把库包含了

#include <string.h>

改为:属性->c/c++->代码生成->运行库->多线程调试DLL