I got such error with the message:
TestBufferQueue.obj : error LNK2019: unresolved external symbol "void __cdecl GenerateAndEnqueueItems<class QueueItem,15>(int,class common::bufferqueue<class QueueItem,15> &)" (??$GenerateAndEnqueueItems@VQueueItem@@$0P@@@YAXHAAV?$bufferqueue@VQueueItem@@$0P@@common@@@Z) referenced in function "private: virtual void __thiscall TestClear_ClearsMultipleElements_Test::TestBody(void)" (?TestBody@TestClear_ClearsMultipleElements_Test@@EAEXXZ)
My code. Header file Helpers.h:
#pragma once
// includes skipped
QueueItem* GenerateQueueItem();
template <typename T, int size>
void GenerateAndEnqueueItems(int, common::bufferqueue<T, size>&);
Cpp file Helpers.cpp:
#include "pch.h"
#include "Helpers.h"
QueueItem* GenerateQueueItem()
{
// code
}
template <typename T, int size>
void GenerateAndEnqueueItems(int itemsNumber, common::bufferqueue<T, size>& queueItem)
{
// code
}
Code usage:
#include "pch.h"
#include "Helpers.h"
TEST(TestClear, ClearsMultipleElements) {
common::bufferqueue<QueueItem, 15> testee;
GenerateAndEnqueueItems(15, testee);
// code
}
Clean and rebuild didn't help. All the object files were created. How to solve it?