memcmp链接器错误Visual Studio 2015

Roo*_*oop 2 c++ linker-errors memcmp visual-studio-2015

我有一个visual studio 2012 c ++项目.我最近卸载了它并安装了visual studio 2015并升级了该项目.当我构建项目时,收到错误,如下所示:

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

此外,我没有在我的代码memcmp fucntion中使用任何地方.

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

找到_memcmp

在MyC++ Project.obj中引用

在libcpmtd.lib(xstrcoll.obj)中引用

加载libvcruntimed.lib(__ memcmp_.obj)

这里有两个问题

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

2.为什么memcmp被加载为__memcmp_.obj

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

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

2.Linker - >忽略所有默认库都设置为空

我已经尝试了所有的项目设置,但一切都是徒劳的.

我只发布了这个我没有用过的memcmp函数.

我使用过mamcpy和memset而没有问题

bla*_*laz 9

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

当您明确使用memcmp时,它可能作为内部函数处理并编译为内联函数.

  • 显式链接到vcruntime.lib为我解决了这个问题.我正在将一个C++应用程序从VS2005移植到VS2015,并在编译IDL代理时遇到此错误.生成的代码使用IID_GENERIC_CHECK_IID宏,该宏使用memcmp. (2认同)

小智 5

尝试将vcruntime.lib和添加ucrt.lib到您的附加依赖项中。===>属性->链接器->输入->附加依赖项

样本路径为'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)