Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo fornece resoluções para solução de problemas para o Compilador do Visual C++ ou o Vinculador do Visual C++.
Aplica-se a: Microsoft Visual C++ 2010 Express, Visual Studio
Número original do KB: 974229
Ação
Ao investigar um possível problema com o compilador ou vinculador do Microsoft Visual C++, é importante obter o máximo de informações possível sobre o processo de build e as opções que estão sendo usadas. Este artigo discute algumas dicas de solução de problemas para ajudar a resolver seu problema de build ou capturar informações abrangentes para o Suporte da Microsoft.
Solução
Problemas do compilador
Para problemas do compilador, como erros internos do compilador (ou seja, C1001), travamentos ou falhas, pode ser útil capturar a saída do pré-processador C/C++ para fornecer um exemplo de problema reproduzível simplificado. No IDE do Visual C++, isso pode ser feito definindo a propriedade Gerar Arquivo Pré-processado como Com Números de Linha (/P) ou Sem Números de Linha (/EP /P). Essa propriedade pode ser encontrada nas páginas de propriedades do projeto em Propriedades de Configuração, C/C++, Configurações do pré-processador.
Essa configuração pode ser definida no nível do projeto no menu Projeto, Propriedades, caso em que ela gerará
.i
arquivos para todos os arquivos de origem no projeto ou pode ser definida para um único arquivo clicando com o botão direito do mouse no arquivo no gerenciador de soluções, selecionando o menu de contexto Propriedades para abrir a caixa de diálogo de propriedades do arquivo único.A opção do compilador /P direciona CL.EXE para capturar a saída do pré-processador para um arquivo. Adicionar /EP suprimirá a adição de informações de número de linha ao arquivo resultante. /P é suficiente, mas /EP /P gerará um arquivo de saída menor. O arquivo de saída do pré-processador gerado terá o mesmo nome do arquivo de origem que está sendo compilado, mas com a extensão de arquivo a.i, por exemplo, file1.cpp gera um arquivo de saída do pré-processador file1.i no mesmo diretório.
Observação
A compilação continuará após a fase de pré-processador ao usar essa opção, ou seja, nenhum
.OBJ
arquivo será gerado pelo compilador e você poderá receber um erro de link refletindo o fato de que os arquivos OBJ não podem ser encontrados.Você pode compilar o arquivo de saída do pré-processador sozinho fora do contexto de um projeto do Visual Studio. O
.i
arquivo contém todo o código do arquivo de cabeçalho, substituição de macro e informações de diretiva do compilador pré-processado necessárias para a compilação desse arquivo específico.C
ou.CPP
de origem. Em outras palavras, é um módulo independente que deve ser capaz de reproduzir um problema de compilação sem dependências de outros arquivos. O arquivo resultante geralmente será grande e conterá uma grande quantidade de espaço em branco.Problemas de link
Para problemas de vinculador (erros do tipo LNKxxxx), você pode usar a opção de linha de comando do vinculador /LINKREPRO para gerar um caso de teste contendo apenas entradas de vinculador sem qualquer dependência de arquivos de origem. /LINKREPRO usa a seguinte sintaxe:
/LINKREPRO:<path>
'<path>'
é o caminho completo para uma pasta vazia no sistema de arquivos local. Essa pasta já deve existir – o vinculador não a criará automaticamente e gerará um erro se a pasta não existir.Essa opção não é exposta diretamente no sistema de projeto. Para adicioná-lo a uma compilação, abra o menu Propriedades do projeto no menu Projeto. Em Propriedades de Configuração, Vinculador, Linha de Comando, na caixa de edição Opções Adicionais, insira a opção (incluindo a barra) e substitua o
/LINKREPRO:<path>
caminho pelo caminho da pasta local pré-existente. Por exemplo:/LINKREPRO:C:\TEMP\LINKREPRO\
.Se já houver outras opções de vinculador nesta caixa de edição, separe-as com vírgulas.
Como alternativa, você pode usar uma variável de
LINK_REPRO
ambiente. Se aLINK_REPRO
variável de ambiente existir, o vinculador lerá o caminho de saída da variável de ambiente e gerará um linkrepro. A opção /LINKREPRO não é necessária ao usar aLINK_REPRO
variável de ambiente. Para usar aLINK_REPRO
variável de ambiente:Abra um Prompt de Comando do Visual Studio. Isso é instalado no menu Iniciar , na pasta Visual Studio na subpasta Ferramentas do Visual Studio.
Crie a variável de
LINK_REPRO
ambiente apontando para um diretório existente e vazio, por exemplo:SET LINK_REPRO=C:\TEMP\LINKREPRO\
.Execute o Visual Studio no mesmo prompt de comando para que ele compartilhe uma cópia do ambiente que você modificou.
Abra o projeto e faça uma opção Reconstruir todo o projeto.
Quando LINK.EXE é invocado na compilação, ele copia tudo o que precisa para vincular seu projeto ao diretório linkrepro. Entre os arquivos copiados estarão seus arquivos de objeto (. OBJ), arquivos de biblioteca necessários (. LIB), incluindo bibliotecas da Microsoft e um arquivo de resposta do vinculador (LINK. RSP), para que o LINK não dependa mais do arquivo de solução.
Para confirmar que você tem todos os arquivos necessários para reproduzir o problema de link, você pode executar LINK no diretório especificado pela variável de ambiente LINK_REPRO, usando o arquivo de resposta do vinculador gerado pelo linkrepro:
LINK @link.rsp
.Antes de fazer isso, use o seguinte comando para desativar esse recurso se estiver usando a variável de ambiente de linha de comando:
SET LINK_REPRO=
.Você também pode usar esse processo para verificar os arquivos envolvidos na criação de uma biblioteca, ao usar LIB.EXE ou LINK /LIB.
Aviso de isenção de responsabilidade
Isenção de responsabilidade de publicação rápida
Os artigos de publicação rápida fornecem informações diretamente de dentro da organização de suporte da Microsoft. As informações aqui contidas são criadas em resposta a tópicos emergentes ou exclusivos, ou destinam-se a complementar outras informações da base de conhecimento.
Aviso de isenção de responsabilidade
A Microsoft e/ou seus fornecedores não fazem representações ou garantias sobre a adequação, confiabilidade ou precisão das informações contidas nos documentos e gráficos relacionados publicados neste site (os "materiais") para qualquer finalidade. Os materiais podem incluir imprecisões técnicas ou erros tipográficos e podem ser revisados a qualquer momento sem aviso prévio.
Na extensão máxima permitida pela lei aplicável, a Microsoft e/ou seus fornecedores se isentam e excluem todas as representações, garantias e condições, sejam expressas, implícitas ou estatutárias, incluindo, mas não se limitando a, representações, garantias ou condições de título, não violação, condição ou qualidade satisfatória, comercialização e adequação a uma finalidade específica, com relação aos materiais.