Как сделать шаблонный класс. внутри динамической библиотеки?

Есть некий шаблонный класс, вот он:

template <typename T>
class COMMON_LIBRARY_EXPORT ThreadQueue : public std::queue<T>
{
    public:
    ThreadQueue(const T& t) = delete;
    ThreadQueue()
    {
        _ignore_condition = false;
        _queue_mutex = new QMutex();
        _queue_condition = new QWaitCondition();
    }

    ThreadQueue<T>& operator=(const ThreadQueue<T>& thread_queue) = delete;

    virtual ~ThreadQueue()
    {
        delete _queue_condition;
        delete _queue_mutex;
    }

    virtual T dequeue()
    {
        QMutexLocker lock(_queue_mutex);
        if (!_ignore_condition && this->empty())
            _queue_condition->wait(_queue_mutex);

        _queue_condition->wakeAll();
        if (_ignore_condition && this->empty())
            return nullptr;

        auto tmp = this->front();
        this->pop();
        return tmp;
    }

    void enqueue(T&& t)
    {
        QMutexLocker lock(_queue_mutex);
        if (!_ignore_condition && this->size() >= QUEUE_DEPTH)
            _queue_condition->wait(_queue_mutex);
        _queue_condition->wakeOne();

        this->push(std::forward<T>(t));
    }

    void ignoreWaitCondition()
    {
        QMutexLocker lock(_queue_mutex);
        _ignore_condition = true;
        _queue_condition->wakeAll();
    }

protected:
    QMutex*          _queue_mutex;
    QWaitCondition*  _queue_condition;
    bool            _ignore_condition;
};

Хотел сделать его внутри динамической библиотеки. Но Получается ошибка линковки, что не удивительно, потому что скомпилироваться - скомпилировался, но реализации. для данного класса у меня нету. Как побороть?? Написать в этом же классе

template class ThreadQueue<MyClass>;

не получится, ибо я не знаю что такое MyClass

Пробовал внутрт, где используется этот класс написать template class ThreadQueue; но видать я то то делаю не так. и получаю ошибку линковки такого рода:

Серьезность Код Описание    Проект  Файл    Строка  Состояние подавления
Ошибка  LNK2019 ссылка на неразрешенный внешний символ "__declspec(dllimport) public: __cdecl     ThreadQueue<class CompressedFrame *>::ThreadQueue<class CompressedFrame *>(void)"     (__imp_??0?$ThreadQueue@PEAVCompressedFrame@@@@QEAA@XZ) в функции "public: void __cdecl     ThreadQueue<class CompressedFrame *>::`local vftable constructor closure'(void)"     (??_T?$ThreadQueue@PEAVCompressedFrame@@@@QEAAXXZ). 

Ответы (0 шт):