我的问题是我在没有明显原因的情况下收到链接器错误,所以我将立即分享我的源代码。
PZ_Buffer.h:
#pragma once
#include <glad/gl.h>
#include <stdint.h>
#include <vector>
class VertexBuffer
{
uint32_t m_BufferID = 0;
public:
VertexBuffer(std::vector<float> data, size_t size);
~VertexBuffer();
void Bind() const;
void Unbind() const;
};
class IndexBuffer
{
uint32_t m_BufferID = 0;
size_t m_Count = 0;
public:
IndexBuffer(std::vector<uint32_t> data, size_t size, size_t count);
~IndexBuffer();
inline size_t GetCount() { return m_Count; }
void Bind() const;
void Unbind() const;
};
PZ_Buffer.cpp:
#include "PZ_Buffer.h"
VertexBuffer::VertexBuffer(std::vector<float> data, size_t size)
: m_BufferID(0)
{
glGenBuffers(1, &m_BufferID);
glBindBuffer(GL_ARRAY_BUFFER, m_BufferID);
glBufferData(GL_ARRAY_BUFFER, size * sizeof(float), data.data(), GL_STATIC_DRAW);
}
VertexBuffer::~VertexBuffer()
{
glDeleteBuffers(1, &m_BufferID);
}
void VertexBuffer::Bind() const
{
glBindBuffer(GL_ARRAY_BUFFER, m_BufferID);
}
void VertexBuffer::Unbind() const
{
glBindBuffer(GL_ARRAY_BUFFER, 0);
}
IndexBuffer::IndexBuffer(std::vector<uint32_t> data, size_t size, size_t count)
: m_BufferID(0), m_Count(count)
{
glGenBuffers(1, &m_BufferID);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_BufferID);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, size * sizeof(uint32_t), data.data(), GL_STATIC_DRAW);
}
IndexBuffer::~IndexBuffer()
{
glDeleteBuffers(1, &m_BufferID);
}
void IndexBuffer::Bind() const
{
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_BufferID);
}
void IndexBuffer::Unbind() const
{
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
}
我不明白问题发生的原因,所以我几乎不可能做任何事情。如果有任何用处,这是控制台中的错误:
1>PZ_Level.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall VertexBuffer::~VertexBuffer(void)" (??1VertexBuffer@@UAE@XZ) referenced in function "public: virtual void * __thiscall VertexBuffer::`scalar deleting destructor'(unsigned int)" (??_GVertexBuffer@@UAEPAXI@Z)
1>PZ_Level.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall VertexBuffer::Bind(void)const " (?Bind@VertexBuffer@@UBEXXZ)
1>PZ_Level.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall VertexBuffer::Unbind(void)const " (?Unbind@VertexBuffer@@UBEXXZ)
1>PZ_Level.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall IndexBuffer::~IndexBuffer(void)" (??1IndexBuffer@@UAE@XZ) referenced in function "public: virtual void * __thiscall IndexBuffer::`scalar deleting destructor'(unsigned int)" (??_GIndexBuffer@@UAEPAXI@Z)
1>PZ_Level.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall IndexBuffer::Bind(void)const " (?Bind@IndexBuffer@@UBEXXZ)
1>PZ_Level.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall IndexBuffer::Unbind(void)const " (?Unbind@IndexBuffer@@UBEXXZ)
我的编译器是MSVC 2022,请不要在没有通知的情况下关闭,谢谢。
编辑:我已阅读有关此错误的 Microsoft 文档以及有关我据称重复的问题的最佳答案,但它们并没有解决我的问题;如果问题出在我的编译器上,请彻底解释。