Partilhar via


Erro fatal C1083

Não é possível abrir o ficheiro de tipo de ficheiro : 'ficheiro': mensagem

Observações

O compilador gera um erro C1083 quando não consegue encontrar um arquivo. Existem muitas causas possíveis para este erro. Um caminho de pesquisa de inclusão incorreto ou ficheiros de cabeçalho ausentes ou nomeados incorretamente são as causas mais frequentes, mas outros tipos de ficheiros e problemas também podem causar C1083. Aqui estão algumas das razões comuns pelas quais o compilador gera esse erro.

O nome do arquivo especificado está errado

O nome de um arquivo pode estar digitado incorretamente. Por exemplo

#include <algorithm.h>

pode não encontrar o ficheiro pretendido. A maioria dos ficheiros de cabeçalho da biblioteca padrão C++ não tem a extensão de ficheiro .h. Esta #include diretiva não encontrará o <algorithm> cabeçalho. Para corrigir esse problema, verifique se o nome de arquivo correto foi inserido, da seguinte maneira:

#include <algorithm>

Certos cabeçalhos da C Runtime Library estão localizados em um subdiretório do diretório include padrão. Por exemplo, para incluir sys/types.h, você deve incluir o nome do sys subdiretório na #include diretiva:

#include <sys/types.h>

O arquivo não está incluído no caminho de pesquisa de inclusão

O compilador não pode encontrar o ficheiro usando as regras de pesquisa para a diretiva #include ou #import. Por exemplo, quando um nome de arquivo de cabeçalho é colocado entre aspas,

#include "myincludefile.h"

Isso diz ao compilador para procurar o arquivo no mesmo diretório que contém o arquivo de origem primeiro e, em seguida, procurar em outros locais especificados pelo ambiente de compilação. Se as aspas contiverem um caminho absoluto, o compilador só procurará o arquivo nesse local. Se as aspas contiverem um caminho relativo, o compilador procurará o arquivo no diretório relativo ao diretório de origem.

Se o nome estiver entre parênteses angulares,

#include <stdio.h>

o compilador segue um caminho de pesquisa que é definido pelo ambiente de compilação, a opção de compilador /I, a opção de compilador /X e a variável de ambiente INCLUDE. Para obter mais informações, incluindo detalhes específicos sobre a ordem de pesquisa usada para localizar um arquivo, consulte Diretiva #include (C/C++) e Diretiva #import.

Se os ficheiros de inclusão estiverem em outro diretório em relação ao diretório de origem e utilizares um caminho relativo nas diretivas de inclusão, deves usar aspas duplas em vez de chavetas angulares. Por exemplo, se o arquivo myheader.h de cabeçalho estiver em um subdiretório de seus códigos-fonte de projeto chamados headers, este exemplo não conseguirá localizar o arquivo e causará C1083:

#include <headers\myheader.h>

mas este exemplo funciona:

#include "headers\myheader.h"

Os caminhos relativos também podem ser usados com diretórios no caminho de pesquisa de inclusão. Se você adicionar um diretório à variável de ambiente INCLUDE ou ao caminho Include Directories no Visual Studio, não adicione parte do caminho às diretivas include. Por exemplo, se o cabeçalho estiver localizado em \path\example\headers\myheader.h, e você adicionar \path\example\headers\ ao caminho Incluir diretórios no Visual Studio, mas sua #include diretiva se referir ao arquivo como

#include <headers\myheader.h>

em seguida, o arquivo não é encontrado. Use o caminho correto relativo ao diretório especificado no caminho de pesquisa include. Neste exemplo, pode alterar o caminho de inclusão para \path\example\, ou remover o segmento de caminho headers\ da diretiva #include.

Problemas com bibliotecas de terceiros e vcpkg

Se você vir esse erro quando estiver tentando configurar uma biblioteca de terceiros como parte de sua compilação, considere usar vcpkg, um gerenciador de pacotes C++, para instalar e compilar a biblioteca. VCPKG suporta uma lista grande e crescente de bibliotecas de terceiros e define todas as propriedades de configuração e dependências necessárias para compilações bem-sucedidas como parte do seu projeto.

O arquivo está em seu projeto, mas não o caminho de pesquisa de inclusão

Mesmo quando os arquivos de cabeçalho são listados no Gerenciador de Soluções como parte de um projeto, os arquivos só são encontrados pelo compilador quando são referidos por uma #include diretiva ou #import em um arquivo de origem e estão localizados em um caminho de pesquisa de inclusão. Diferentes tipos de compilações podem usar caminhos de pesquisa diferentes. A /X opção do compilador pode ser usada para excluir diretórios do caminho de pesquisa include. Isso permite que compilações diferentes usem arquivos de inclusão diferentes que têm o mesmo nome, mas são mantidos em diretórios diferentes. Esta é uma alternativa à compilação condicional usando comandos de pré-processador. Para obter mais informações sobre a opção do /X compilador, consulte /X (Ignore Standard Include Paths).

Para corrigir esse problema, corrija o caminho que o compilador usa para procurar o arquivo incluído ou importado. Um novo projeto usa caminhos de pesquisa de inclusão padrão. Talvez seja necessário modificar o caminho de pesquisa de inclusão para adicionar um diretório para seu projeto. Se você estiver compilando na linha de comando, adicione o caminho à variável de ambiente INCLUDE ou à /I opção do compilador para especificar o caminho para o arquivo.

Para definir o caminho do diretório include no Visual Studio, abra a caixa de diálogo Property Pages do projeto. Selecione Diretórios VC++ em Propriedades de Configuração no painel esquerdo e edite a propriedade Incluir Diretórios . Para obter mais informações sobre os diretórios por usuário e por projeto pesquisados pelo compilador no Visual Studio, consulte Página de propriedades de diretórios VC++. Para obter mais informações sobre a opção do /I compilador, consulte /I (Diretórios de Inclusão Adicional).

O ambiente INCLUDE ou LIB da linha de comando não está definido

Quando o compilador é invocado na linha de comando, as variáveis de ambiente geralmente são usadas para especificar caminhos de pesquisa. Se o caminho de pesquisa descrito pela variável de ambiente INCLUDE ou LIB não estiver definido corretamente, um erro C1083 pode ser gerado. É altamente recomendável usar um atalho de prompt de comando do desenvolvedor para definir o ambiente básico para compilações de linha de comando. Para obter mais informações, consulte Build C/C++ on the Command Line. Para obter mais informações sobre como usar variáveis de ambiente, consulte Como usar variáveis de ambiente em uma compilação.

O arquivo pode estar bloqueado ou em uso

Se você estiver usando outro programa para editar ou acessar o arquivo, ele pode ter o arquivo bloqueado. Tente fechar o arquivo no outro programa. Às vezes, o outro programa pode ser o próprio Visual Studio, se você estiver usando opções de compilação paralela. Se desativar a opção de compilação paralela faz com que o erro desapareça, então este é o problema. Outros sistemas de construção paralela também podem ter esse problema. Tenha cuidado para definir dependências de arquivo e projeto para que a ordem de compilação esteja correta. Em alguns casos, considere a criação de um projeto intermediário para forçar a ordem de dependência de compilação para um arquivo comum que pode ser criado por vários projetos. Às vezes, os programas antivírus bloqueiam temporariamente os arquivos alterados recentemente para verificação. Se possível, considere excluir os diretórios de compilação do projeto do scanner antivírus.

A versão errada de um nome de arquivo está incluída

Um erro C1083 também pode indicar que a versão errada de um arquivo está incluída. Por exemplo, uma compilação pode incluir a versão errada de um arquivo que tem uma #include diretiva para um arquivo de cabeçalho que não se destina a essa compilação. Por exemplo, determinados ficheiros aplicam-se apenas a compilações x86 ou a compilações de Debug. Quando o arquivo de cabeçalho não é encontrado, o compilador gera um erro C1083. A correção para este problema é usar o ficheiro correto, não adicionar o ficheiro de cabeçalho ou diretório na compilação.

Os cabeçalhos pré-compilados ainda não estão pré-compilados

Quando um projeto é configurado para usar cabeçalhos pré-compilados, os arquivos relevantes .pch devem ser criados para que os arquivos que usam o conteúdo do cabeçalho possam ser compilados. Por exemplo, o pch.cpp arquivo (stdafx.cpp no Visual Studio 2017 e anteriores) é criado automaticamente no diretório do projeto para novos projetos. Compile esse arquivo primeiro para criar os arquivos de cabeçalho pré-compilados. No design típico do processo de construção, isso é feito automaticamente. Para obter mais informações, consulte Criando arquivos de cabeçalho pré-compilados.

Outras causas

  • Você instalou um SDK ou uma biblioteca de terceiros, mas não abriu um novo prompt de comando do desenvolvedor. Se o SDK ou a biblioteca adicionar ficheiros ao caminho INCLUDE, poderá ser necessário abrir uma nova janela de prompt de comando de desenvolvedor para aplicar estas alterações nas variáveis de ambiente.

  • O arquivo usa código gerenciado, mas a opção /clr do compilador não é especificada. Para obter mais informações, consulte /clr (Common Language Runtime Compilation).

  • O arquivo é compilado usando uma configuração de opção de compilador diferente /analyze da usada para pré-compilar os cabeçalhos. Quando os cabeçalhos de um projeto são pré-compilados, todos devem usar as mesmas /analyze configurações. Para obter mais informações, consulte /analyze (Análise de código).

  • O arquivo ou diretório foi criado pelo Subsistema Windows para Linux, a diferenciação de maiúsculas e minúsculas por diretório está ativada e o caso especificado de um caminho ou arquivo não corresponde ao caso do caminho ou arquivo no disco.

  • O arquivo, o diretório ou o disco é de leitura apenas.

  • O Visual Studio ou as ferramentas de linha de comando não têm permissões suficientes para ler o arquivo ou o diretório. Isso pode acontecer, por exemplo, quando os arquivos de projeto têm propriedade diferente do processo que executa o Visual Studio ou as ferramentas de linha de comando. Às vezes, esse problema pode ser corrigido executando o Visual Studio ou o prompt de comando do desenvolvedor como administrador.

  • Não há identificadores de arquivo suficientes. Feche algumas aplicações e, em seguida, recompile. Esta condição é incomum em circunstâncias típicas. No entanto, isso pode ocorrer quando grandes projetos são criados em um computador que tem memória física limitada.

Exemplo

O exemplo a seguir gera um erro C1083 quando o arquivo "test.h" de cabeçalho não existe no diretório de origem ou no caminho de pesquisa include.

// C1083.cpp
// compile with: /c
#include "test.h"   // C1083 test.h doesn't exist
#include "stdio.h"  // OK

Para obter informações sobre como criar projetos C/C++ no IDE ou na linha de comando e informações sobre como definir variáveis de ambiente, consulte Projetos e sistemas de compilação.

Ver também