Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következő fájltípusú fájl nem nyitható meg: "fájl": üzenet
Megjegyzések
A fordító C1083-hibát generál, ha nem talál egy fájlt. Ennek a hibának számos oka lehet. A leggyakoribb ok a helytelen keresési útvonal vagy a hiányzó vagy helytelenül elnevezett fejlécfájlok, de más fájltípusok és problémák is okozhatják a C1083-at. Íme néhány gyakori ok, amiért a fordító ezt a hibát generálja.
A megadott fájlnév helytelen
Előfordulhat, hogy egy fájl neve hibás. Például
#include <algorithm.h>
lehet, hogy nem találja a kívánt fájlt. A C++ standard kódtár fejlécfájljainak többsége nem rendelkezik .h fájlnévkiterjesztéssel. Az #include irányelv nem találja a <algorithm> fejlécet. A probléma megoldásához ellenőrizze, hogy a megfelelő fájlnév van-e megadva az alábbiak szerint:
#include <algorithm>
A C futtatókörnyezeti kódtár egyes fejlécei a standard include könyvtár alkönyvtárában találhatók. Például ahhoz, hogy belefoglalja a sys/types.h, az sys alkönyvtár nevét meg kell adnia az #include irányelvben:
#include <sys/types.h>
A fájl nem szerepel a belefoglalási keresési útvonalban
A fordító nem találja a fájlt a #include vagy #import irányelv keresési szabályainak alkalmazásakor. Ha például egy fejlécfájl nevét idézőjelek közé rendezik,
#include "myincludefile.h"
ez arra utasítja a fordítót, hogy keresse meg a fájlt ugyanabban a könyvtárban, amely először a forrásfájlt tartalmazza, majd keresse meg a buildkörnyezet által megadott egyéb helyeket. Ha az idézőjelek abszolút elérési utat tartalmaznak, a fordító csak az adott helyen keresi a fájlt. Ha az idézőjelek relatív elérési utat tartalmaznak, a fordító a forráskönyvtárhoz képest keresi a fájlt a könyvtárban.
Ha a nevet szögletes zárójelek közé foglalja,
#include <stdio.h>
a fordító egy keresési útvonalat követ, amelyet a build környezet, a /I fordítási opció, a /X fordítási opció és az INCLUDE környezeti változó határoz meg. További információkért, beleértve a fájlok kereséséhez használt keresési sorrendre vonatkozó konkrét részleteket, lásd #include irányelv (C/C++) és #import irányelv.
Ha a belefoglalt fájlok a forráskönyvtárhoz képest egy másik könyvtárban találhatók, és relatív elérési utat használ a belefoglalási irányelvekben, szögletes zárójelek helyett dupla idézőjeleket kell használnia. Ha például a fejlécfájl myheader.h a projektfejlécek nevű projektforrások alkönyvtárában található, akkor ez a példa nem találja a fájlt, és C1083-at okoz:
#include <headers\myheader.h>
de ez a példa működik:
#include "headers\myheader.h"
A relatív elérési útvonalak a címtárakkal az include keresési útvonalban is használhatók. Ha címtárat ad hozzá az INCLUDE környezeti változóhoz vagy a Címtárak belefoglalása elérési úthoz a Visual Studióban, ne adja hozzá a belefoglalási irányelvek elérési útjának egy részét. Ha például a fejléc \path\example\headers\myheader.h található, és hozzáadja a \path\example\headers\-t az Ön Belefoglalási könyvtárai elérési útjához a Visual Studio-ban, de az #include irányelv a fájlra hivatkozik,
#include <headers\myheader.h>
ekkor a fájl nem található. Használja a megfelelő elérési utat az "include" keresési útvonalban megadott könyvtárhoz viszonyítva. Ebben a példában módosíthatja a tartalmazási keresési útvonalat \path\example\-ra, vagy eltávolíthatja az headers\ elérési út szegmensét az #include irányelvből.
Harmadik féltől származó kódtár hibái és vcpkg
Ha ez a hiba akkor jelenik meg, amikor egy harmadik féltől származó kódtárat próbál konfigurálni a build részeként, fontolja meg a Vcpkg, egy C++ csomagkezelő használatát a kódtár telepítéséhez és összeállításához. A vcpkg támogatja a külső kódtárak nagy és növekvő listáját, és a projekt részeként beállítja a sikeres buildekhez szükséges összes konfigurációs tulajdonságot és függőséget.
A fájl a projektben található, de nincs benne a keresési útvonalban.
Még akkor is, ha a fejlécfájlok egy projekt részeként szerepelnek a Megoldáskezelőben , a fájlokat csak akkor találja meg a fordító, ha egy forrásfájlban hivatkozik rájuk egy #include irányelv, #import és egy belefoglalt keresési útvonalon található. A különböző buildek különböző keresési útvonalakat használhatnak. A /X fordítóbeállítással ki lehet zárni a könyvtárakat a keresési útvonalból. Ez lehetővé teszi, hogy a különböző buildek különböző, azonos nevű, de különböző könyvtárakban tárolt fájlokat használjanak. A feltételes fordítás alternatív módja az előfeldolgozási parancsok használata. A /X fordítóbeállításokkal kapcsolatos további információért lásd a /X (Normál beillesztési útvonalak figyelmen kívül hagyása).
A probléma megoldásához javítsa ki a fordító által a belefoglalt vagy importált fájl kereséséhez használt elérési utat. Egy új projekt alapértelmezés szerint keresési útvonalakat is használ. Előfordulhat, hogy módosítania kell az include keresési útvonalat, hogy hozzáadjon a projekthez egy könyvtárat. Ha a parancssorban fordít, adja hozzá az elérési utat az INCLUDE környezeti változóhoz, vagy használja a /I fordító opciót a fájl elérési útjának megadásához.
Ha meg szeretné adni a címtár elérési útját a Visual Studióban, nyissa meg a projekt Tulajdonságlapok párbeszédpaneljét. A bal oldali panelen válassza a VC++ könyvtárak lehetőséget a Konfiguráció tulajdonságai csoportban, majd szerkessze a Címtárak belefoglalása tulajdonságot . A Visual Studióban a fordító által keresett felhasználónkénti és projektenkénti könyvtárakról további információt a VC++ könyvtárak tulajdonságlapján talál. A fordító beállításáról további információt a /I(További belefoglalási könyvtárak) című témakörben talál/I.
A parancssori INCLUDE vagy LIB környezet nincs beállítva
Amikor a parancssorban meghívja a fordítót, a környezeti változók gyakran használják a keresési útvonalak megadására. Ha az INCLUDE vagy LIB környezeti változó által leírt keresési útvonal nincs megfelelően beállítva, C1083-hiba hozható létre. Határozottan javasoljuk, hogy használjon fejlesztői parancssori parancsikont a parancssori buildek alapszintű környezetének beállításához. További információ: C/C++ fordítás a parancssorban. További információ a környezeti változók használatáról : Útmutató: Környezeti változók használata buildben.
Lehet, hogy a fájl zárolva vagy használatban van
Ha egy másik programot használ a fájl szerkesztéséhez vagy eléréséhez, előfordulhat, hogy a fájl zárolva van. Próbálja meg bezárni a fájlt a másik programban. Néha a másik program maga a Visual Studio lehet, ha párhuzamos fordítási lehetőségeket használ. Ha kikapcsolja a párhuzamos buildelési beállítást, a hiba eltűnik, akkor ez a probléma. Más párhuzamos buildrendszerek is okozhatják ezt a problémát. Ügyeljen arra, hogy fájl- és projektfüggőségeket állítson be, hogy a buildelési sorrend helyes legyen. Bizonyos esetekben érdemes lehet köztes projektet létrehozni, hogy függőségi sorrendet kényszerítsen ki egy olyan közös fájlhoz, amelyet több projekt is létrehozhat. Néha a víruskereső programok ideiglenesen zárolják a nemrég módosított fájlokat a vizsgálathoz. Ha lehetséges, fontolja meg a projekt buildkönyvtárainak kizárását a víruskeresőből.
A fájlnév nem megfelelő verziója szerepel a fájlban
A C1083-hiba azt is jelezheti, hogy a fájl nem megfelelő verziója szerepel a fájlban. Egy build például tartalmazhat olyan fájl nem megfelelő verzióját, amely irányelvvel #include rendelkezik egy olyan fejlécfájlhoz, amely nem az adott buildhez készült. Előfordulhat például, hogy egyes fájlok csak x86-buildekre vagy hibakeresési buildekre vonatkoznak. Ha a fejlécfájl nem található, a fordító C1083-hibát generál. A probléma megoldása a megfelelő fájl használata, nem pedig a fejlécfájl vagy a könyvtár hozzáadása a buildhez.
Az előre összeállított fejlécek még nincsenek előre lefordítva
Ha egy projekt előre összeállított fejlécek használatára van konfigurálva, a megfelelő .pch fájlokat létre kell hozni, hogy a fejléc tartalmát használó fájlok lefordíthatók legyenek. Például a pch.cpp fájl (stdafx.cpp a Visual Studio 2017-ben és korábbi verzióiban) automatikusan létrejön az új projektek projektkönyvtárában. Először fordítsa le azt a fájlt, hogy létrehozza az előre összeállított fejlécfájlokat. A tipikus buildelési folyamat kialakításában ez automatikusan megtörténik. További információ: Előre összeállított fejlécfájlok létrehozása.
Egyéb okok
Telepített egy SDK-t vagy harmadik féltől származó kódtárat, de nem nyitott meg új fejlesztői parancssort. Ha az SDK vagy a tár fájlokat ad hozzá az INCLUDE elérési úthoz, előfordulhat, hogy meg kell nyitnia egy új fejlesztői parancssori ablakot a környezeti változók változásainak felvételéhez.
A fájl felügyelt kódot használ, de a fordítási beállítás
/clrnincs megadva. További információért lásd:/clr(Common Language Runtime Compilation).A fájlt egy másik
/analyzefordítóbeállítási beállítással fordítják, mint amit a fejlécek előfordításához használtak. Ha egy projekt fejlécei előre összeállítottak, mindegyiknek ugyanazokat/analyzea beállításokat kell használnia. További információ:/analyze(Kódelemzés).A fájlt vagy könyvtárat a Linux windowsos alrendszere hozta létre, a könyvtáronkénti kis- és nagybetűk érzékenysége engedélyezve van, és az elérési út vagy fájl megadott esete nem egyezik a lemezen lévő elérési út vagy fájl esetével.
A fájl, a könyvtár vagy a lemez írásvédett.
A Visual Studio vagy a parancssori eszközök nem rendelkeznek elegendő engedéllyel a fájl vagy a könyvtár olvasásához. Ez például akkor fordulhat elő, ha a projektfájlok tulajdonjoga eltér a Visual Studiót vagy a parancssori eszközöket futtató folyamattól. Ez a probléma néha megoldható a Visual Studio vagy a fejlesztői parancssor rendszergazdaként való futtatásával.
Nincs elég fájlkezelő. Zárjon be néhány alkalmazást, majd fordítsa újra. Ez a feltétel tipikus körülmények között szokatlan. Ez azonban akkor fordulhat elő, ha a nagy projektek olyan számítógépre épülnek, amely korlátozott fizikai memóriával rendelkezik.
példa
Az alábbi példa C1083-hibát okoz, ha a fejlécfájl "test.h" nem létezik a forráskönyvtárban vagy a belefoglalási keresési útvonalon.
// C1083.cpp
// compile with: /c
#include "test.h" // C1083 test.h doesn't exist
#include "stdio.h" // OK
A C/C++-projektek IDE-ben vagy parancssorban történő készítéséről, valamint a környezeti változók beállításáról a Projektek és a rendszerek buildelése című témakörben talál további információt.