Compartilhar via


Aviso das ferramentas de vinculador LNK4098

defaultlib 'library' conflita com uso de outras bibliotecas; use /NODEFAULTLIB:library

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

Observação

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

Você pode usar a opção /VERBOSE:LIB do vinculador para descobrir quais bibliotecas o vinculador pesquisa. Por exemplo, quando o executável usa as bibliotecas de runtime de vários threads e não 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 runtime incorretas usando /NODEFAULTLIB para cada biblioteca que você deseja ignorar.

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

Para usar esta biblioteca de runtime Ignore 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 de não depuração das bibliotecas de runtime, poderá usar as seguintes opções com o vinculador:

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