Compartilhar via


Erro das Ferramentas de Vinculador LNK1211

informação de tipo pré-compilado não encontrado; 'filename' não vinculado nem substituído

O arquivo de objeto filename, compilado usando /Yc, não foi especificado no comando LINK nem foi substituído.

Se você estiver criando uma biblioteca de depuração que usa cabeçalhos pré-compilados e se você especificar /Yc e /Z7, o Visual C++ gerará um arquivo de objeto pré-compilado contendo informações de depuração. O erro ocorre somente quando você armazena o arquivo de objeto pré-compilado em uma biblioteca, usa a biblioteca para criar uma imagem executável e os arquivos de objeto referenciados não têm referências transitivas a nenhuma das funções definidas pelo arquivo de objeto pré-compilado.

Há dois métodos para contornar essa situação:

  • Especifique a opção do compilador /Yd para adicionar as informações de depuração do cabeçalho pré-compilado para cada módulo de objeto. Esse método é menos desejável porque geralmente produz módulos de objeto grandes, que podem aumentar o tempo necessário para vincular o aplicativo.

  • Especifique /Yl e passe o nome de qualquer cadeia de caracteres arbitrária quando você criar um arquivo de cabeçalho pré-compilado que não contenha definições de função. Isso orienta o compilador a criar um símbolo no arquivo de objeto pré-compilado e emitir uma referência a esse símbolo em cada arquivo de objeto que usou o arquivo de cabeçalho pré-compilado associado ao arquivo de objeto pré-compilado.

Quando você compila um módulo com /Yc e /Yl, o compilador cria um símbolo semelhante a __@@_PchSym_@00@...@symbol_name (em que as reticências (...) representam uma cadeia de caracteres gerada pelo compilador) e o armazena no módulo de objeto. Qualquer arquivo de origem compilado com esse cabeçalho pré-compilado refere-se ao símbolo especificado, o que faz com que o vinculador inclua o módulo de objeto e as respectivas informações de depuração da biblioteca.