首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >memcmp链接器错误2015

memcmp链接器错误2015
EN

Stack Overflow用户
提问于 2015-12-15 09:30:35
回答 3查看 7K关注 0票数 3

我有一个可视化工作室2012 c++项目。我最近卸载了它并安装了visual studio 2015并升级了该项目。当我构建项目时,会出现错误,如下所示:

函数中引用的错误LNK2019未解析外部符号_memcmp

此外,在我的代码memcmp功能中,我没有使用任何地方。

我使用了链接器详细功能,可以在输出文件中看到以下内容:

发现_memcmp 在MyC++Project.obj中引用 在libcpmtd.lib(xstrcoll.obj)中引用 加载libvcruntimed.lib(__memcmp_.obj)

这里有两个问题

1.即使我没有在代码中使用memcmp,为什么我会得到链接器错误?

2.为什么memcmp作为__memcmp_.obj加载?

我的项目中也有以下设置:

1.C++-->代码生成-->运行时库设置为/MTd

2.将链接器->忽略所有默认库设置为空。

我尝试了所有的项目设置,但一切都白费了。

我只对这个未使用的memcmp函数有异议。

我使用了mamcpy和memset,对那些没有问题。

EN

回答 3

Stack Overflow用户

发布于 2016-03-23 12:30:37

显式地将vcruntime.lib或其他适当版本的CRT库添加到链接器参数(附加依赖项)。

当您显式使用memcmp时,它可能被作为本征函数处理,并被编译为内联函数。

票数 8
EN

Stack Overflow用户

发布于 2017-11-07 01:36:08

尝试将vcruntime.libucrt.lib添加到附加依赖项中。===>属性->Linker->Input->附加依赖项

'vcruntime.lib': "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\vcruntime.lib"的样本路径

'ucrt.lib' : "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\ucrt\x86\ucrt.lib"的样本路径

我的环境:VS2017 (v141)

票数 4
EN

Stack Overflow用户

发布于 2021-10-08 01:12:33

我在Visual 2015的遗留C++ 6.0 nmake文件中遇到了同样的问题。

这篇名为介绍通用CRT的博客文章描述了Visual 2015运行时是如何划分为多个库的。运行时现在“将CRT划分为两个逻辑部分: VCRuntime (包含进程启动和异常处理所需的编译器支持功能)和一个包含CRT所有纯库部分的”稳定“部分,以便于更新。

只要您不使用/nodefaultlib选项链接,则在链接项目时将找到所有正确的库文件。如果使用/nodefaultlib选项链接,则在链接时需要链接多个额外的库。例如,虽然以前可能只链接了msvcrt.lib以使用CRT,但现在还需要链接vcruntime.libucrt.lib。下面是一个表,它显示了每个库的“口味”都需要链接哪些库: 发布DLL (/MD ):msvcrt.lib vcruntime.lib ucrt.lib Debug DLL (/MDd):msvcrtd.lib vcruntimed.lib ucrtd.lib发布静态(/MT ):libcmt.lib libvcruntime.lib libucrt.lib Debug静态(/MTd):libcmtd.lib libvcruntimed.lib libucrtd.lib

还请参阅Microsoft文档C运行时和C++标准库.lib文件,该文档描述了有关库的详细信息。

另见微软C/C++变更历史2003-2015年

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

https://stackoverflow.com/questions/34285476

复制
相关文章

相似问题

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