首页 > 解决方案 > 由于 C++ 中的解构函数,xcode 中出现未精炼的符号错误

问题描述

我正在尝试在 xCode 上用 C++ 制作解构函数,但我得到一个错误,如下所示:Undefined symbol: Shader::Shader()我认为这是因为它没有识别我的解构函数~Shader()

完整的错误信息是:

Undefined symbols for architecture x86_64:
    "Shader::Shader()", referenced from:
        init() in example.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我看过一些关于解构器的视频,但它们似乎都没有使用 xcode 或有这个问题。所以我不确定如何摆脱这个错误。

这是使用的代码:

着色器.h

class Shader {
public:
    Shader(void);
    ~Shader();
}

着色器.cpp

Shader::Shader(void)
{
    m_name = "";
    m_vertexShader = 0;
    m_fragmentShader = 0;
    m_programObject = 0;
}

Shader::~Shader()
{
    glUseProgram(0);
    glDeleteShader(m_vertexShader);
    glDeleteShader(m_fragmentShader);
    glDeleteProgram(m_programObject);
}

example.cpp 中的 init() 函数:

void init()
{
    glClearColor(0.0,0.0,0.0,0.0);                      

    myShader = new Shader;
    if(!myShader->load("Basic", "glslfiles/basic.vert", "glslfiles/basic.frag")) {
        cout << "failed to load shader" << endl;
    }                                               
    createGeometry();   
}

标签: c++xcodeclass

解决方案


推荐阅读