Предупреждение средств компоновщика LNK4098
"библиотека" по умолчанию конфликтует с использованием других libs; используйте /NODEFAULTLIB:library
Вы пытаетесь связаться с несовместимыми библиотеками.
Примечание.
Теперь библиотеки времени выполнения содержат директивы, чтобы предотвратить сочетание различных типов. Вы получите это предупреждение, если вы пытаетесь использовать различные типы или отладочные версии библиотеки времени выполнения в одной программе. Например, если вы скомпилировали один файл для использования одной библиотеки времени выполнения и другого файла для использования другого типа (например, отладки и розничной торговли) и попытались связать их, вы получите это предупреждение. Необходимо скомпилировать все исходные файлы, чтобы использовать одну и ту же библиотеку времени выполнения. Дополнительные сведения см. в параметрах компилятора /MD, /MT, /LD (использование библиотеки времени выполнения).
Вы можете использовать переключатель компоновщика /VERBOSE:LIB , чтобы узнать, какие библиотеки выполняет поиск компоновщика. Например, если исполняемый файл использует многопоточные библиотеки, не отладочные библиотеки времени выполнения, список, сообщаемый должен включать LIBCMT.lib, а не LIBCMTD.lib, MSVCRT.lib или MSVCRTD.lib. Компоновщик может игнорировать неправильные библиотеки времени выполнения с помощью /NODEFAULTLIB для каждой библиотеки, которую вы хотите игнорировать.
В таблице ниже показано, какие библиотеки следует игнорировать в зависимости от используемой библиотеки во время выполнения. В командной строке используйте один параметр /NODEFAULTLIB для каждой библиотеки, чтобы игнорировать. В интегрированной среде разработки Visual Studio разделите библиотеки, которые игнорируют с запятой в свойстве "Игнорировать определенные библиотеки по умолчанию".
Использование этой библиотеки времени выполнения | Игнорировать эти библиотеки |
---|---|
Multithreaded (libcmt.lib) | msvcrt.lib; libcmtd.lib; msvcrtd.lib |
Многопоточный с помощью библиотеки DLL (msvcrt.lib) | libcmt.lib; libcmtd.lib; msvcrtd.lib |
Отладка multithreaded (libcmtd.lib) | libcmt.lib; msvcrt.lib; msvcrtd.lib |
Отладка multithreaded с помощью библиотеки DLL (msvcrtd.lib) | libcmt.lib; msvcrt.lib; libcmtd.lib |
Например, если вы получили это предупреждение и хотите создать исполняемый файл, использующий не отладочную версию библиотек времени выполнения, можно использовать следующие параметры компоновщика:
/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib