首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从__Atomic_fetch_add_4引用的未解析外部符号LIBCMTD.lib

从__Atomic_fetch_add_4引用的未解析外部符号LIBCMTD.lib
EN

Stack Overflow用户
提问于 2012-07-30 22:13:27
回答 1查看 1.5K关注 0票数 1

我刚刚安装了VS2012测试版,并升级了我的VS2010项目,它看起来像它应该编译的那样,但是在链接时,我得到以下错误:

1>LIBCMTD.lib(excptptr.obj):error LNK2019:未解析的外部符号__Atomic_fetch_add_4,在函数"unsigned long __cdecl std::_Inc_atomic_counter_explicit“中引用。“(?_Inc_atomic_counter_explicit@std@@YAKAAKW4memory_order@1@@Z) 1>LIBCMTD.lib(excptptr.obj):error LNK2019:未解析的外部符号__Atomic_fetch_sub_4”函数中引用的“未签名的long __cdecl std::_Dec_atomic_counter_explicit(无符号的long &,enum std::memory_order)”,(?_Dec_atomic_counter_explicit@std@@YAKAAKW4memory_order@1@@Z)

谷歌没有提到这些错误信息,这是令人惊讶的。看起来__Atomic_fetch_add_4应该是fetchadd4操作代码的一个内在特性,但它不是(据我所知),正确的内在特性是_InterlockedIncrement

我不知道是什么导致了这一切。有趣的是,它来自excptptr.obj,我在这个项目中禁用了C++异常。使它们发挥作用并没有什么区别。

编辑:我注意到在谷歌时,这个符号似乎只被GNU代码引用。也许MS已经更新了VS2012的STL,并引入了一些尚未捕获的GNU参考代码;需要修改以使用MS内部吗?

EN

回答 1

Stack Overflow用户

发布于 2012-08-30 13:51:57

我的一个用VS2010编译的项目也有类似的问题,在用VS2012编译时得到了未解决的外部符号__Atomic_fetch_add_4错误。我不知道为什么会发生这种情况,但经过“干净的解决方案”和“重建一切”之后,问题就消失了。我怀疑在那里,旧的obj文件是造成问题的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11730461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档