Partilhar via


Aviso das Ferramentas de Ligação LNK4098

defaultlib 'biblioteca' entra em conflito com o uso de outras libs; use /NODEFAULTLIB:library

Observações

Você está tentando se vincular a bibliotecas incompatíveis.

Observação

As bibliotecas de execução agora têm diretivas para evitar a mistura de diferentes tipos. Você receberá esse aviso se tentar usar diferentes tipos ou versões de depuração e não depuração da biblioteca de tempo de execução no mesmo programa. Por exemplo, se você compilou um arquivo para usar um tipo de biblioteca de tempo de execução e outro arquivo para usar outro tipo (por exemplo, depuração versus varejo) e tentou vinculá-los, receberá esse aviso. Você deve compilar todos os arquivos de origem para usar a mesma biblioteca de tempo de execução. Para obter mais informações, consulte as opções do compilador /MD, /MT, /LD (Use Run-Time Library ).

Você pode usar a opção /VERBOSE:LIB do vinculador para descobrir quais bibliotecas o vinculador pesquisa. Por exemplo, quando o seu executável utiliza as bibliotecas de tempo de execução multi-threaded sem depuração, a lista relatada deve incluir LIBCMT.lib, e não LIBCMTD.lib, MSVCRT.lib ou MSVCRTD.lib. Você pode dizer ao vinculador para ignorar as bibliotecas de tempo de execução incorretas usando /NODEFAULTLIB para cada biblioteca que deseja ignorar.

A tabela abaixo mostra quais bibliotecas devem ser ignoradas dependendo de qual biblioteca de tempo de execução você deseja usar. Na linha de comando, use uma opção /NODEFAULTLIB para cada biblioteca a ser ignorada. No IDE do Visual Studio, separe as bibliotecas a serem ignoradas por ponto-e-vírgula na propriedade Ignorar bibliotecas padrão específicas .

Para usar esta biblioteca de execução Ignorar estas bibliotecas
Multithreaded (libcmt.lib) msvcrt.lib; libcmtd.lib; msvcrtd.lib
Multithreaded usando DLL (msvcrt.lib) libcmt.lib; libcmtd.lib; msvcrtd.lib
Depurar Multithreaded (libcmtd.lib) libcmt.lib; msvcrt.lib; msvcrtd.lib
Depurar Multithreaded usando DLL (msvcrtd.lib) libcmt.lib; msvcrt.lib; libcmtd.lib

Por exemplo, se você recebeu esse aviso e deseja criar um arquivo executável que usa a versão DLL não depurável das bibliotecas de tempo de execução, você pode usar as seguintes opções com o vinculador:

/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib