3

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

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

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

有一个相关的线程,(“LNK2022:元数据操作失败”让我发疯)但它不是同样的问题,但有点相似。我尝试了那里建议的修复,但仍然没有运气。

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

4

3 回答 3

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

这对我有帮助

于 2011-06-08T16:26:52.530 回答
0

Visual Studio 不支持右值引用。仔细检查您的 boost 配置选项,以确保您使用的是正确的工具集。(请参阅升压文档)

此外,请确保您拥有当前版本的 boost。

-保罗H

于 2009-10-21T16:25:00.163 回答
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 {};
    }
}

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

于 2020-07-28T08:29:31.420 回答