저는 비디오 게임을위한 OpenGL 프레임 워크를 현재 개발 중입니다. 이 프레임 워크에는 셰이더를로드하는 특정 프로그램이 들어 있습니다.또 다른 "해결되지 않은 외계 심벌"오류
InitShaderProgram(...);
CreateShader(...);
CreateProgram(...);
InitShaderProgram 같은 방법으로 CreateShader 및 CreateProgram를 호출 그러나
bool ShaderLoader::InitShaderProgram(GLuint &Program)
{
std::vector<GLuint> ShaderList;
ShaderList.push_back(ShaderLoader::CreateShader(GL_VERTEX_SHADER, VertexShader));
ShaderList.push_back(ShaderLoader::CreateShader(GL_FRAGMENT_SHADER, FragmentShader));
Program = ShaderLoader::CreateProgram(ShaderList);
std::for_each(ShaderList.begin(), ShaderList.end(), glDeleteShader);
return GL_TRUE;
}
,이 코드를 컴파일하려고 할 때마다, 그것은 나에게 두 가지를 제공합니다 상기 프로그램의 클래스에서 나는이 세 가지 기능을 가지고 "확인되지 않은 외부 기호"오류 : 내 헤더 파일에서
Error 4 error LNK2019: unresolved external symbol "public: virtual unsigned int __thiscall ShaderLoader::CreateProgram(class std::vector<unsigned int,class std::allocator<unsigned int> > const &)" ([email protected]@@[email protected][email protected]@[email protected]@@[email protected]@@Z) referenced in function "public: bool __thiscall ShaderLoader::InitShaderProgram(unsigned int &)" ([email protected]@@[email protected])
Error 3 error LNK2019: unresolved external symbol "public: virtual unsigned int __thiscall ShaderLoader::CreateShader(unsigned int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" ([email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z) referenced in function "public: bool __thiscall ShaderLoader::InitShaderProgram(unsigned int &)" ([email protected]@@[email protected])
, 나는 같은이 세 가지 함수를 정의 :
bool InitShaderProgram(GLuint&);
GLuint CreateShader(GLenum, const std::string&);
GLuint CreateProgram(const std::vector<GLuint>&);
이 기능을 사용하면 컴파일러는 이러한 기능의 출처를 이해하지 못합니다. 누구든지 나를 도울 수 있습니까?
어떻게 컴파일하나요? –
같은 주제에 관한 다른 모든 질문과 마찬가지로 : 기호 정의에 연결되지 않았습니다. 그들이 사는 곳을 알아 내고, 연결시키고, 끝내십시오. – PlasmaHH
이러한 함수는 InitShaderProgram() 함수와 동일한 클래스에 있습니다. 기본적으로이 함수를 연결하지 않습니까? – valtari