我刚刚将STL用法添加到某些代码中,我收到此链接错误:
错误LNK2019:未解析的外部符号“public:__thiscall std :: _ Lockit ::〜_Lockit(void)”
我必须在链接中遗漏一些东西,我之前已经这样做了 - 谷歌搜索到目前为止没有帮助。 HMM ......
以下是代码段:
#pragma once
#include "Observer.h"
#include <list>
class NGE_Observable
{
public:
Observable(void);
virtual ~Observable(void);
void RegisterObserver(Observer *pObserver, void *user);
void UnRegisterObserver(Observer *pObserver);
void NotifyObservers();
private:
std::list<Observer *> observers;
};
已回答!:操作员错误 - 呃。我已将项目属性设置为忽略所有默认库,因此未链接stl库。我很困惑,因为我只收到一条错误消息,但是当我添加了stl调用时,链接错误增加了。
答案 0 :(得分:0)
答案 1 :(得分:0)
当链接器尝试链接到单线程标准库时,您可能已将编译器选项设置为多线程。线程模型或线程相关#define
中的不一致通常是在名称中具有“锁定”的类中出现问题的原因...
答案 2 :(得分:0)
如果可能,请发布您的代码。另请参阅MSDN论坛上this看似相关的问题。你在使用任何旧式标题等吗?
答案 3 :(得分:0)
析构函数是否实际在任何地方实现?如果没有,那就是你的问题。列表尝试在删除时调用包含元素的析构函数,如果析构函数实际上不存在于任何地方,则会出现链接器错误。
答案 4 :(得分:0)
错误清除说:std :: _ Lockit 声明但未定义。
如果已实施,请发布“std :: _ Lockit”的定义。如果其他人将其删除,则您忘记链接库文件,但只包含标题文件。