Поделиться через


Предупреждение средств компоновщика 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