我正在尝试在具有公共语言运行时支持的项目中使用boost线程。我收到以下链接器错误。错误LNK2022:元数据操作失败(8013119F):存在TypeRef,它应该但不具有相应的TypeDef :(虚拟):( 0x01000073)。
如果我对实例化boost线程的行进行注释,我不会收到任何链接器错误。
我尝试在线查找修复此错误,在一个这样的地方建议在包含任何boost库之前使用“#define BOOST_THREAD_USE_DLL”。我尝试了这个,但它仍然给了我同样的错误。
有一个相关的线程,("LNK2022: metadata operation failed" driving me insane)但它不是同一个问题,但有些相似。我尝试了修复建议,但仍然没有运气。
有谁知道如何解决这个问题?
答案 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 {};
}
}
这里的答案对我很有帮助。谢谢。