Pergunta

Esta pergunta já tem uma resposta aqui:

Estou construindo um projeto no Visual C ++ 2008, que é um exemplo de aplicativo baseado em MFC para uma biblioteca estática de classe C ++ que usarei em meu próprio projeto em breve. Ao construir a configuração de depuração, recebo o seguinte:

AVISO LNK4098: DefaultLib 'msvcrt' conflita com o uso de outros LIBs; Use /NodefaultLib: Biblioteca

Depois de usar a opção recomendada (adicionando "msvcrt" ao campo "Ignorar a biblioteca específica" nas configurações do vinculador do projeto para a configuração de depuração), o programa vincula e funciona bem. No entanto, gostaria de descobrir por que esse conflito ocorreu, por que tenho que ignorar uma biblioteca crítica e, se espero problemas mais tarde, se adicionar o ignorar, ou o que acontece se eu não o fizer (porque o Programa crie de qualquer maneira).

Ao mesmo tempo, a configuração de liberação avisa:

Aviso LNK4075: Ignorando '/editandContinue' devido a 'especificação'/opt: icf '
AVISO LNK4098: DefaultLib 'msvcrtd' conflita com o uso de outros LIBs; Use /NodefaultLib: Biblioteca

Acho que o sufixo "D" significa que esta é a versão de depuração do tempo de execução do VC ++, não tenho idéia do porquê que isso é usado desta vez. De qualquer forma, adicionar "msvcrtd" ao campo de ignorar causa muitos erros de link do formulário:

Erro lnk2001: símbolo externo não resolvido __imp___crtdbgreportw

Qualquer percepção muito apreciada.

Foi útil?

Solução

Isso geralmente acontece quando você vincula uma biblioteca estática que usa outra versão do tempo de execução do VC ++ (C++ ->Code Generation->Runtime Library definindo nas propriedades do projeto).

Outras dicas

Isso geralmente aconteceu comigo quando eu estava (inadvertidamente) misturando diferentes sabores do RTL, como (como parece estar no seu caso) depuração e liberação ou MT e ST.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top