未解决的外部符号,具有自定义阻塞队列实现
Unresolved external symbol with custom blocking queue implementation
我创建了自己的阻止队列,我在弄清楚为什么会收到链接器错误时遇到了一些麻烦(请注意,这是Visual Studio 2010中的QT应用程序):
#ifndef BLOCKING_QUEUE_H
#define BLOCKING_QUEUE_H
#include <QObject>
#include <QSharedPointer>
#include <QWaitCondition>
#include <QMutex>
#include <queue>
namespace TestingNS
{
template<typename Data>
class BlockingQueue
{
private:
std::queue<QSharedPointer<Data>> _queue;
QMutex _mutex;
QWaitCondition _monitor;
volatile bool _closed;
public:
BlockingQueue();
void Close();
size_t Size();
void Empty();
bool IsClosed();
bool Enqueue(QSharedPointer<Data> data);
bool TryDequeue(QSharedPointer<Data>& value, unsigned long time = ULONG_MAX);
};
}
#endif //BLOCKING_QUEUE_H
实现时间更长,所以我有一份粘贴:http://pastie.org/5368660
程序入口点看起来像这样:
#include <QtCore/QCoreApplication>
#include <QTimer>
#include <iostream>
#include "BlockingQueue.h"
using namespace std;
using namespace TestingNS;
class Item
{
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
BlockingQueue<Item> queue;
cout << "Press any key to exit!" << endl;
char in;
cin.get(in);
QTimer::singleShot(0, &a, SLOT(quit()));
return a.exec();
}
我得到的链接错误是:
Error 1 error LNK2019: unresolved external symbol "public: __thiscall TestingNS::BlockingQueue<class Item>::BlockingQueue<class Item>(void)" (??0?$BlockingQueue@VItem@@@TestingNS@@QAE@XZ) referenced in function _main
我不明白为什么链接器找不到构造函数(也没有BlockingQueue
中的任何其他方法)。有什么想法吗?
是 template
,您必须将实现放置在blockingqueue.h
一段时间,标准确实提供关键字export
以允许这样的单独的实现文件。但是没有多少供应商实施了它。C 11使用导出但保留export
的停用供未来可能使用的关键字。)
模板必须与特定的请求一起使用模板的实例。
相关文章:
- 带自定义比较器的最小优先级队列
- 优先级队列自定义比较器
- 将 RTOS 队列对象封装在仅具有静态分配的 IQueue 自定义接口中
- Cython中带有自定义比较器的优先级队列
- C++:自定义数据类型向量错误的队列
- 具有自定义对象的C 优先级队列
- 优先队列的自定义比较器
- 我正在声明一个自定义优先级队列,包括 pair<pair<int,int>int >,如何清除它?
- C++ 具有自定义比较函数的优先级队列在 push() 上行为不正确
- 通过引用传递自定义优先级队列
- 自定义队列类C++
- 未解决的外部符号,具有自定义阻塞队列实现
- 尝试使用自定义类的结构中的变量创建该类的优先级队列
- 使用自定义比较器声明C++优先级队列的问题
- 无法推送在队列中分配了"new"的自定义结构
- 自定义deque(双端队列)类
- 优先级队列自定义比较器的返回值表示什么
- 访问类的私有成员的自定义优先级队列比较器
- C++类中具有自定义比较功能的优先级队列
- 自定义队列中C++错误:未分配正在释放的指针