链接器错误:LNK2022

时间:2009-10-19 15:39:26

标签: c++ visual-c++ lnk2022

我正在尝试在具有公共语言运行时支持的项目中使用boost线程。我收到以下链接器错误。错误LNK2022:元数据操作失败(8013119F):存在TypeRef,它应该但不具有相应的TypeDef :(虚拟):( 0x01000073)。

如果我对实例化boost线程的行进行注释,我不会收到任何链接器错误。

我尝试在线查找修复此错误,在一个这样的地方建议在包含任何boost库之前使用“#define BOOST_THREAD_USE_DLL”。我尝试了这个,但它仍然给了我同样的错误。

有一个相关的线程,("LNK2022: metadata operation failed" driving me insane)但它不是同一个问题,但有些相似。我尝试了修复建议,但仍然没有运气。

有谁知道如何解决这个问题?

3 个答案:

答案 0 :(得分:6)

# include <boost/thread.hpp>
namespace boost {
    struct thread::dummy {};
}

这对我有帮助

答案 1 :(得分:0)

Visual Studio不支持r值引用。仔细检查您的boost配置选项,确保您使用的是正确的工具集。 (参见增强文档)

另外,请确保您拥有当前版本的提升。

-PaulH

答案 2 :(得分:0)

就我而言,使用OpenCV 4.1.1时发生了类似的错误。 VS2019可以,但是VS2015不好。错误消息是这样的。

LNK2022: metadata operation failed (8013119F) : A TypeRef exists which should, but does not, have a corresponding TypeDef: (Impl): (0x0100002a)

我在OpenCV包含文件中搜索了名为“ Impl”的结构或类。 然后,我可以避免在#include opencv标头下面添加以下代码的错误。

namespace cv {
    namespace cuda {
        class Stream::Impl {};
    }
}
namespace cv {
    namespace cuda {
        class Event::Impl {};
    }
}

这里的答案对我很有帮助。谢谢。