0

Моя проблема не особо обычная(

У меня есть статическая библиотека. В ней шаблонный класс с статическим методом

template<typename T>
class VertexBuffer
{
public:
    virtual ~VertexBuffer() = default;
virtual void Bind() const = 0;
virtual void Unbind() const = 0;

static VertexBuffer* Create(T* vertices, uint32_t num);

};

template<typename T> VertexBuffer<T>* VertexBuffer<T>::Create(T* vertices, uint32_t num) { GraphicsContext::API api = GraphicsContext::GetAPI();

switch (api)
{
case GraphicsContext::API::None: PF_CORE_ASSERT(false, &quot;None API &quot;); return nullptr;
case GraphicsContext::API::DirectX11: return new DX::DX11VertexBuffer&lt;T&gt;(vertices, num);
}

PF_CORE_ASSERT(false, &quot;Unknown Graphics API!&quot;);
return nullptr;

}

В самой библиотеке я вызываю этот Create(...)

И при сборке приложения оно жалуется такими словами

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2019 unresolved external symbol "public: static class                 PF::Render::VertexBuffer<struct PF::Render::DX::Vertex> * __cdecl PF::Render::VertexBuffer<struct PF::Render::DX::Vertex>::Create(struct PF::Render::DX::Vertex *,unsigned int)" (?Create@?$VertexBuffer@UVertex@DX@Render@PF@@@Render@PF@@SAPEAV123@PEAUVertex@DX@23@I@Z) referenced in function "private: void __cdecl PF::Render::DX::DX11Context::InitializeScene(void)" (?InitializeScene@DX11Context@DX@Render@PF@@AEAAXXZ)  Sandbox D:\projects\test\Peakforge\Sandbox\Peakforge.lib(DX11Context.obj)   1   
mixtape
  • 55
  • Необычная?... В .cpp реализацию шаблонов писали? См. раздел Неправильная реализация шаблонного кода. в вопросе-дубликате. – Harry Apr 26 '23 at 12:50
  • @Harry, теперь оно жалуется в месте где я наследую этот класс оно ожидао , вместо < – mixtape Apr 26 '23 at 13:15
  • template class DX11VertexBuffer : public VertexBuffer { } – mixtape Apr 26 '23 at 13:16

0 Answers0