代码之家  ›  专栏  ›  技术社区  ›  Jeff

在VS2005中使用STL时出现链接问题

  •  0
  • Jeff  · 技术社区  · 15 年前

    我刚在一些代码中添加了stl用法,我得到了这个链接错误:

    错误LNK2019:未解析的外部符号“public:u thiscall std::_lockit::~ _lockit(void)”。

    我一定是在链接中遗漏了一些东西,我以前做过这个——到目前为止,谷歌还没有起到什么作用。隐马尔可夫模型。。。。。。

    下面是代码段:

    #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;
    };
    

    回答!: 操作员错误-duh。我已经将项目属性设置为忽略所有默认库,因此没有链接STL库。我很困惑,因为我只收到了一条错误消息,但是当我添加STL调用时,链接错误增加了。

    5 回复  |  直到 14 年前
        1
  •  0
  •   Cătălin Pitiș    15 年前

    一个可能的原因是您为类lockit声明了析构函数,但没有实现它。

    您是否实施了锁定?

    后期编辑: this 帮助你?

        2
  •  0
  •   sth ypicasso    15 年前

    当链接器试图链接到单线程标准库时,您可能已经将编译器选项设置为多线程。线程模型或线程相关的不一致 #define s通常是在名为“lock”的类中出现问题的原因…

        3
  •  0
  •   dirkgently    15 年前

    如果可能,请发布您的代码。也可以看看 this 似乎与MSDN论坛相关的问题。你用的是旧式的报头吗?

        4
  •  0
  •   Stack Overflow is garbage    15 年前

    析构函数实际上是在任何地方实现的吗?如果不是,那就是你的问题。当所包含的元素被删除时,列表会尝试对其调用析构函数,如果析构函数实际上不存在于任何位置,则会得到一个链接器错误。

        5
  •  0
  •   J.W.    15 年前

    清除错误后显示:std::_lockit is 宣布 但是 未定义 .

    请张贴“std::_lockit”的定义,如果您 实施 它。如果 别人 实现了它,然后你忘了链接 图书馆 文件,但只包括 页眉 文件。