У меня есть проект Visual Studio 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.Linker -> Ignore. Все библиотеки по умолчанию не установлены.
Я перепробовал все настройки проекта, но все напрасно.
У меня есть проблема только с этой функцией memcmp, которую я не использовал.
Я использовал mamcpy и memset и не имею проблем с этими
Явно добавьте vcruntime.lib или другую подходящую версию ЭЛТ-библиотека к параметрам компоновщика (дополнительные зависимости).
Когда вы используете memcmp явно, он, вероятно, обрабатывается как внутренняя функция и компилируется как встроенная функция.
Попробуй добавить 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)