LNK2001(和其他链接器错误)无明显原因

问题描述 投票:0回答:1

我的问题是我在没有明显原因的情况下收到链接器错误,所以我将立即分享我的源代码。

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 文档以及有关我据称重复的问题的最佳答案,但它们并没有解决我的问题;如果问题出在我的编译器上,请彻底解释。

c++ visual-c++
1个回答
0
投票

问题就在这里,PZ_Buffer.h 的 Item Type 设置为 C/C++ 编译器

必须设置为C/C++ header

© www.soinside.com 2019 - 2024. All rights reserved.