Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Kan het bestandstypebestand niet openen: 'bestand': bericht
Opmerkingen
De compiler genereert een C1083-fout wanneer het geen bestand kan vinden. Er zijn veel mogelijke oorzaken voor deze fout. Een onjuist zoekpad of ontbrekende of verkeerd benoemde headerbestanden zijn de meest voorkomende oorzaken, maar andere bestandstypen en problemen kunnen ook C1083 veroorzaken. Hier volgen enkele veelvoorkomende redenen waarom de compiler deze fout genereert.
De opgegeven bestandsnaam is onjuist
De naam van een bestand kan verkeerd worden getypt. Bijvoorbeeld
#include <algorithm.h>
kan het bestand dat u van plan bent niet vinden. De meeste C++ Standard Library-headerbestanden hebben .h geen bestandsnaamextensie. Deze #include richtlijn zal de <algorithm> koptekst niet vinden. Als u dit probleem wilt oplossen, controleert u of de juiste bestandsnaam als volgt is ingevoerd:
#include <algorithm>
Bepaalde C Runtime Library-headers bevinden zich in een submap van de standaard-include-map. Als u bijvoorbeeld sys/types.h wilt opnemen, moet u de naam van de submap sys opnemen in de #include instructie.
#include <sys/types.h>
Het bestand is niet opgenomen in het zoekpad opnemen
De compiler kan het bestand niet vinden met behulp van de zoekregels voor de #include of #import instructie. Als een headerbestandsnaam bijvoorbeeld tussen aanhalingstekens staat,
#include "myincludefile.h"
dit vertelt de compiler om eerst naar het bestand te zoeken in dezelfde map die het bronbestand bevat en kijk vervolgens op andere locaties die zijn opgegeven door de buildomgeving. Als de aanhalingstekens een absoluut pad bevatten, zoekt de compiler alleen naar het bestand op die locatie. Als de aanhalingstekens een relatief pad bevatten, zoekt de compiler naar het bestand in een map die relatief is aan de bronmap.
Als de naam tussen hoekige haken staat
#include <stdio.h>
de compiler volgt een zoekpad dat is gedefinieerd door de buildomgeving, de /I compileroptie, de /X compileroptie en de omgevingsvariabele INCLUDE . Zie #include Richtlijn (C/C++) en #import Richtlijn voor meer informatie, waaronder specifieke details over de zoekvolgorde die wordt gebruikt om een bestand te vinden.
Als uw inclusiebestanden in een andere map staan dan uw bronmap, en u een relatief pad in uw include-directieven gebruikt, moet u dubbele aanhalingstekens gebruiken in plaats van punthaken. Als uw headerbestand myheader.h zich bijvoorbeeld in een submap van de projectbronnen met de naam headers bevindt, kan het bestand niet worden gevonden in dit voorbeeld en wordt C1083 veroorzaakt:
#include <headers\myheader.h>
maar dit voorbeeld werkt:
#include "headers\myheader.h"
Relatieve paden kunnen ook worden gebruikt met directories in het inclusiezoekpad. Als u een map toevoegt aan de omgevingsvariabele INCLUDE of aan het pad Include Directories in Visual Studio, voegt dan geen deel van het pad toe aan de include-directieven. Als uw koptekst zich bijvoorbeeld bevindt op \path\example\headers\myheader.h en u voegt \path\example\headers\ toe aan het pad Inclusief mappen in Visual Studio, maar uw #include instructie verwijst naar het bestand als
#include <headers\myheader.h>
dan is het bestand niet gevonden. Gebruik het juiste pad ten opzichte van de directory die is opgegeven in het include-zoekpad. In dit voorbeeld kunt u het zoekpad wijzigen naar \path\example\, of het headers\ padsegment verwijderen uit de #include instructie.
Problemen met externe bibliotheken en vcpkg
Als u deze fout ziet wanneer u een bibliotheek van derden probeert te configureren als onderdeel van uw build, kunt u overwegen vcpkg, een C++-pakketbeheerder te gebruiken om de bibliotheek te installeren en te bouwen. vcpkg ondersteunt een grote en groeiende lijst met bibliotheken van derden en stelt alle configuratie-eigenschappen en afhankelijkheden in die vereist zijn voor succesvolle builds als onderdeel van uw project.
Het bestand bevindt zich in uw project, maar niet in het opneemzoekpad.
Zelfs wanneer headerbestanden worden vermeld in Solution Explorer als onderdeel van een project, worden de bestanden alleen gevonden door de compiler wanneer ze worden verwezen door een #include of #import instructie in een bronbestand en zich in een zoekpad bevinden. Verschillende soorten builds kunnen verschillende zoekpaden gebruiken. De /X compileroptie kan worden gebruikt om mappen uit te sluiten van het zoekpad opnemen. Hierdoor kunnen verschillende builds verschillende include-bestanden met dezelfde naam gebruiken, maar in verschillende mappen worden bewaard. Dit is een alternatief voor voorwaardelijke compilatie met behulp van preprocessoropdrachten. Voor meer informatie over de compileroptie/X, zie /X (Standaard inclusief paden negeren).
Als u dit probleem wilt oplossen, corrigeert u het pad dat de compiler gebruikt om te zoeken naar het opgenomen of geïmporteerde bestand. Een nieuw project maakt gebruik van standaard include-zoekpaden. Mogelijk moet u het include-zoekpad wijzigen voor de toevoeging van een directory aan uw project. Als u op de opdrachtregel compileert, voegt u het pad toe aan de omgevingsvariabele INCLUDE of de /I compileroptie om het pad naar het bestand op te geven.
Als u het pad van de include-directory in Visual Studio wilt instellen, opent u het dialoogvenster Eigenschappenpagina's van het project. Selecteer VC++-mappen onder Configuratie-eigenschappen in het linkerdeelvenster en bewerk de eigenschap Inclusief mappen . Zie de eigenschappenpagina van VC++ Directory's voor meer informatie over de mappen per gebruiker en per project die door de compiler in Visual Studio zijn doorzocht. Zie /I voor meer informatie over de compileroptie, zie /I (Aanvullende inclusie mappen).
De opdrachtregel-INCLUDE- of LIB-omgeving is niet ingesteld
Wanneer de compiler wordt aangeroepen op de opdrachtregel, worden omgevingsvariabelen vaak gebruikt om zoekpaden op te geven. Als het zoekpad dat wordt beschreven door de omgevingsvariabele INCLUDE of LIB niet juist is ingesteld, kan er een C1083-fout worden gegenereerd. U wordt ten zeerste aangeraden een snelkoppeling naar de opdrachtpromt voor ontwikkelaars te gebruiken om de basisomgeving voor opdrachtregelopbouw in te stellen. Voor meer informatie, zie Build C/C++ op de opdrachtregel. Zie voor meer informatie over het gebruik van omgevingsvariabelen Hoe: Omgevingsvariabelen gebruiken in een build.
Het bestand is mogelijk vergrendeld of in gebruik
Als u een ander programma gebruikt om het bestand te bewerken of te openen, is het bestand mogelijk vergrendeld. Probeer het bestand in het andere programma te sluiten. Soms kan het andere programma Visual Studio zelf zijn, als u parallelle compilatieopties gebruikt. Als u de optie voor parallelle build uitschakelt, gaat de fout weg, dan is dit het probleem. Andere parallelle buildsystemen kunnen dit probleem ook hebben. Wees voorzichtig met het instellen van bestands- en projectafhankelijkheden, zodat de buildvolgorde juist is. In sommige gevallen kunt u een tussenliggend project maken om de volgorde van buildafhankelijkheid af te dwingen voor een gemeenschappelijk bestand dat kan worden gebouwd door meerdere projecten. Soms vergrendelen antivirusprogramma's onlangs gewijzigde bestanden tijdelijk voor scannen. Overweeg indien mogelijk om de buildmappen van uw project uit te sluiten van de antivirusscanner.
De verkeerde versie van een bestandsnaam is opgenomen
Een C1083-fout kan ook aangeven dat de verkeerde versie van een bestand is opgenomen. Een build kan bijvoorbeeld de verkeerde versie van een bestand bevatten met een #include instructie voor een headerbestand dat niet is bedoeld voor die build. Bepaalde bestanden zijn bijvoorbeeld alleen van toepassing op x86-builds of op builds voor foutopsporing. Wanneer het headerbestand niet wordt gevonden, genereert de compiler een C1083-fout. De oplossing voor dit probleem is om het juiste bestand te gebruiken, niet om het headerbestand of de map toe te voegen aan de build.
De vooraf gecompileerde headers zijn nog niet gecompileerd
Wanneer een project is geconfigureerd voor het gebruik van vooraf gecompileerde headers, moeten de relevante .pch bestanden worden gemaakt, zodat bestanden die gebruikmaken van de inhoud van de header kunnen worden gecompileerd. Bijvoorbeeld, het bestand "pch.cpp" wordt automatisch in de projectmap aangemaakt voor nieuwe projecten (stdafx.cpp in Visual Studio 2017 en eerder). Compileer dat bestand eerst om de vooraf gecompileerde headerbestanden te maken. In het typische ontwerp van het bouwproces wordt dit automatisch gedaan. Zie Precompiled Header Files maken voor meer informatie.
Andere oorzaken
U hebt een SDK of bibliotheek van derden geïnstalleerd, maar u hebt geen nieuwe opdrachtprompt voor ontwikkelaars geopend. Als de SDK of bibliotheek bestanden toevoegt aan het INCLUDE-pad , moet u mogelijk een nieuw opdrachtpromptvenster voor ontwikkelaars openen om deze wijzigingen in de omgevingsvariabele op te halen.
Het bestand maakt gebruik van beheerde code, maar de compileroptie
/clris niet opgegeven. Zie (Common Language Runtime Compilation) voor/clrmeer informatie.Het bestand wordt gecompileerd met behulp van een andere
/analyzeinstelling voor compileropties dan wordt gebruikt om de headers vooraf te compileren. Wanneer de headers voor een project vooraf zijn gecompileerd, moeten ze allemaal dezelfde/analyzeinstellingen gebruiken. Zie (Codeanalyse) voor/analyzemeer informatie.Het bestand of de map is gemaakt door het Windows-subsysteem voor Linux, de gevoeligheid voor hoofdletters per map is ingeschakeld en het opgegeven geval van een pad of bestand komt niet overeen met het geval van het pad of bestand op schijf.
Het bestand, de map of de schijf heeft het kenmerk Alleen-lezen.
Visual Studio of de opdrachtregelprogramma's beschikken niet over voldoende machtigingen om het bestand of de map te lezen. Dit kan bijvoorbeeld gebeuren wanneer de projectbestanden een ander eigendom hebben dan het proces waarin Visual Studio of de opdrachtregelprogramma's worden uitgevoerd. Soms kan dit probleem worden opgelost door Visual Studio of de opdrachtprompt voor ontwikkelaars uit te voeren als beheerder.
Er zijn onvoldoende bestandsingangen. Sluit enkele toepassingen en compileer vervolgens opnieuw. Deze situatie is ongebruikelijk onder typische omstandigheden. Het kan echter optreden wanneer grote projecten zijn gebouwd op een computer met beperkt fysiek geheugen.
Voorbeeld
In het volgende voorbeeld wordt een C1083-fout gegenereerd wanneer het headerbestand "test.h" niet bestaat in de bronmap of op het opnamezoekpad.
// C1083.cpp
// compile with: /c
#include "test.h" // C1083 test.h doesn't exist
#include "stdio.h" // OK
Zie Projecten en buildsystemen voor informatie over het bouwen van C/C++-projecten in de IDE of op de opdrachtregel en informatie over het instellen van omgevingsvariabelen.