Aracılığıyla paylaş


Önemli Hata C1083

Dosya türü dosyası açılamıyor: 'file': message

Derleyici, dosya bulamadıklarında bir C1083 hatası oluşturur. Bu hatanın birçok olası nedeni vardır. Arama yolunun yanlış olması veya eksik veya yanlış adlandırılmış üst bilgi dosyaları en yaygın nedenlerdir, ancak diğer dosya türleri ve sorunlar da C1083'e neden olabilir. Derleyicinin bu hatayı oluşturmasının yaygın nedenlerinden bazıları aşağıdadır.

Belirtilen dosya adı yanlış

Dosyanın adı yanlış yazılmış olabilir. Örneğin,

#include <algorithm.h>

istediğiniz dosyayı bulamayabilirsiniz. C++ Standart Kitaplığı üst bilgi dosyalarının çoğunda dosya adı uzantısı yoktur .h . Bu #include yönerge üst bilgiyi bulamaz <algorithm> . Bu sorunu düzeltmek için doğru dosya adının girildiğini aşağıdaki gibi doğrulayın:

#include <algorithm>

Belirli C Çalışma Zamanı Kitaplığı üstbilgileri , standart ekleme dizininin alt dizininde yer alır. Örneğin, eklemek sys/types.hiçin yönergesine sys alt dizin adını #include eklemeniz gerekir:

#include <sys/types.h>

Dosya ekleme arama yoluna dahil değil

Derleyici, veya #import yönergesi için #include arama kurallarını kullanarak dosyayı bulamıyor. Örneğin, bir üst bilgi dosyası adı tırnak içine alındığında,

#include "myincludefile.h"

bu, derleyiciye dosyayı ilk olarak kaynak dosyayı içeren aynı dizinde aramasını ve ardından derleme ortamı tarafından belirtilen diğer konumlara bakmasını söyler. Tırnak işaretleri içinde mutlak bir yol varsa, derleyici dosyayı yalnızca ilgili konumda arar. Tırnak işaretleri içinde göreli bir konum varsa, derleyici, dosyayı kaynak dizine göreli olan dizinde arar.

Ad köşeli ayraç içine alınmışsa,

#include <stdio.h>

derleyicisi, derleme ortamı, derleyici seçeneği, /I derleyici seçeneği /X ve INCLUDE ortam değişkeni tarafından tanımlanan bir arama yolunu izler. Bir dosyayı bulmak için kullanılan arama sırası hakkında belirli ayrıntılar da dahil olmak üzere daha fazla bilgi için bkz . #include Yönergesi (C/C++) ve #import Yönergesi.

Ekleme dosyalarınız kaynak dizininize göre başka bir dizindeyse ve ekleme yönergelerinizde göreli bir yol kullanıyorsanız, açılı ayraçlar yerine çift tırnak kullanmanız gerekir. Örneğin, üst bilgi dosyanız myheader.h proje kaynaklarınızın headers adlı bir alt dizinindeyse, bu örnek dosyayı bulamaz ve C1083'e neden olur:

#include <headers\myheader.h>

ancak bu örnek işe yarar:

#include "headers\myheader.h"

Göreli yollar, ekleme arama yolundaki dizinlerle de kullanılabilir. INCLUDE ortam değişkenine veya Visual Studio'daki Dizin ekle yolunuza bir dizin eklerseniz, ekleme yönergelerine yolun bir bölümünü eklemeyin. Örneğin, üst bilginiz konumundaysa \path\example\headers\myheader.hve Visual Studio'da Dizinleri Ekle yolunuza eklerseniz\path\example\headers\, ancak yönergeniz #include dosyaya şu şekilde başvuruyorsa:

#include <headers\myheader.h>

ardından dosya bulunamadı. Ekleme arama yolunda belirtilen dizine göre doğru yolu kullanın. Bu örnekte, ekleme arama yolunu olarak \path\example\değiştirebilir veya yol kesimini headers\ #include yönergesinden kaldırabilirsiniz.

Üçüncü taraf kitaplık sorunları ve vcpkg

Derlemenizin bir parçası olarak üçüncü taraf kitaplığını yapılandırmaya çalışırken bu hatayı görürseniz, kitaplığı yüklemek ve derlemek için bir C++ paket yöneticisi olan vcpkg kullanmayı göz önünde bulundurun. vcpkg, büyük ve büyüyen bir üçüncü taraf kitaplık listesini destekler ve projenizin bir parçası olarak başarılı derlemeler için gereken tüm yapılandırma özelliklerini ve bağımlılıklarını ayarlar.

Dosya projenizde, ancak ekleme arama yolunda değil

Üst bilgi dosyaları bir projenin parçası olarak Çözüm Gezgini listelense bile, dosyalar yalnızca kaynak dosyadaki bir #include veya #import yönergesi tarafından başvurulduğunda ve ekleme arama yolunda bulunduklarında derleyici tarafından bulunur. Farklı türde yapılar farklı arama yolları kullanabilir. Derleyici /X seçeneği, dizinleri ekleme arama yolunun dışında tutmak için kullanılabilir. Bu, farklı yapıların aynı ada sahip farklı ekleme dosyalarını kullanmasına, fakat farklı dizinlerde tutulmasına olanak tanır. Bu, önişlemci komutlarını kullanarak koşullu derlemeye alternatiftir. Derleyici seçeneği hakkında /X daha fazla bilgi için bkz /X . (Standart Ekleme Yollarını Yoksay).

Bu sorunu gidermek için, eklenen veya içeri aktarılan dosyayı aramak üzere derleyici tarafından kullanılan yolu düzeltin. Yeni bir proje varsayılan ekleme arama yollarını kullanır. Projenize dizin eklemek için ekleme arama yolunu değiştirmeniz gerekebilir. Komut satırında derliyorsanız, dosyanın yolunu belirtmek için include ortam değişkenine veya /I derleyici seçeneğine yolunu ekleyin.

Visual Studio'da dizin ekle yolunu ayarlamak için projenin Özellik Sayfaları iletişim kutusunu açın. Sol bölmedeki Yapılandırma Özellikleri'nin altında VC++ Dizinleri'ni seçin ve dizinleri ekle özelliğini düzenleyin. Visual Studio'da derleyici tarafından aranan kullanıcı başına ve proje başına dizinler hakkında daha fazla bilgi için bkz . VC++ Dizinleri Özellik Sayfası. Derleyici seçeneği hakkında /I daha fazla bilgi için bkz /I . (Ek Ekleme Dizinleri).

KOMUT satırı INCLUDE veya LIB ortamı ayarlanmadı

Derleyici komut satırı üzerinde çağrıldığında, ortam değişkenleri genellikle arama yollarını belirtmek için kullanılır. INCLUDE veya LIB ortam değişkeni tarafından açıklanan arama yolu doğru ayarlanmadıysa, bir C1083 hatası oluşturulabilir. Komut satırı derlemeleri için temel ortamı ayarlamak için bir geliştirici komut istemi kısayolu kullanmanızı kesinlikle öneririz. Daha fazla bilgi için bkz . Komut Satırında C/C++ Derlemesi. Ortam değişkenlerini kullanma hakkında daha fazla bilgi için bkz . Nasıl yapılır: Derlemede Ortam Değişkenlerini Kullanma.

Dosya kilitli veya kullanımda olabilir

Dosyayı düzenlemek veya dosyaya erişmek için başka bir program kullanıyorsanız dosya kilitli olabilir. Diğer programdaki dosyayı kapatmayı deneyin. Paralel derleme seçeneklerini kullanıyorsanız bazen diğer program Visual Studio'nun kendisi olabilir. Paralel derleme seçeneğinin kapatılması hatanın ortadan kalkmasını sağlıyorsa sorun budur. Diğer paralel derleme sistemlerinde de bu sorun olabilir. Derleme sırasının doğru olması için dosya ve proje bağımlılıklarını ayarlamaya dikkat edin. Bazı durumlarda, birden çok proje tarafından oluşturulabilecek ortak bir dosya için derleme bağımlılığı sırasını zorlamak için bir ara proje oluşturmayı göz önünde bulundurun. Bazen virüsten koruma programları yakın zamanda değiştirilen dosyaları tarama için geçici olarak kilitler. Mümkünse, proje derleme dizinlerinizi virüsten koruma tarayıcısından dışlamanız önerilir.

Dosya adının yanlış versiyonu eklendi

C1083 hatası, dosyanın yanlış versiyonunun eklendiğini de belirtebilir. Örneğin, bir derleme, bu derleme için tasarlanmamış bir #include üst bilgi dosyası için yönergesi olan bir dosyanın yanlış sürümünü içerebilir. Örneğin, bazı dosyalar yalnızca x86 derlemeleri veya Hata ayıklama derlemeleri için geçerli olabilir. Üst bilgi dosyası bulunamadığında derleyici bir C1083 hatası oluşturur. Bu sorunu gidermek için doğru dosyayı kullanın ve yapıya üstbilgi dosyasını veya dizinini eklemeyin.

Önceden derlenmiş üst bilgiler henüz önceden derlenmemiş

Bir proje önceden derlenmiş üst bilgileri kullanacak şekilde yapılandırıldığında, üst bilgi içeriğini kullanan dosyaların derlenebilmesi için ilgili .pch dosyaların oluşturulması gerekir. Örneğin, pch.cpp dosya (stdafx.cpp Visual Studio 2017 ve önceki sürümlerinde) yeni projeler için proje dizininde otomatik olarak oluşturulur. Önceden derlenmiş üstbilgi dosyalarını oluşturmak için öncelikle bu dosyayı derleyin. Tipik derleme işlemi tasarımında, bu otomatik olarak yapılır. Daha fazla bilgi için bkz . Önceden Derlenmiş Üst Bilgi Dosyaları Oluşturma.

Diğer nedenler

  • BIR SDK veya üçüncü taraf kitaplığı yüklediniz, ancak yeni bir geliştirici komut istemi açmadınız. SDK veya kitaplık INCLUDE yoluna dosya eklerse, bu ortam değişkeni değişikliklerini almak için yeni bir geliştirici komut istemi penceresi açmanız gerekebilir.

  • Dosya yönetilen kod kullanıyor, ancak derleyici seçeneği /clr belirtilmemiş. Daha fazla bilgi için bkz /clr . (Ortak Dil Çalışma Zamanı Derlemesi).

  • Dosya, üst bilgileri önceden derlemek için kullanılandan farklı /analyze bir derleyici seçeneği ayarı kullanılarak derlenmiş. Bir projenin üst bilgileri önceden derlendiğinde, tümü aynı /analyze ayarları kullanmalıdır. Daha fazla bilgi için bkz /analyze . (Kod Analizi).

  • Dosya veya dizin Linux için Windows Alt Sistemi tarafından oluşturuldu, dizin başına büyük/küçük harf duyarlılığı etkinleştirildi ve belirtilen yol veya dosya durumu disk üzerindeki yol veya dosyanın durumuyla eşleşmiyor.

  • Dosya, dizin veya disk salt okunur durumdadır.

  • Visual Studio veya komut satırı araçları, dosyayı veya dizini okumak için yeterli izinlere sahip değildir. Örneğin proje dosyalarının sahipliği Visual Studio veya komut satırı araçlarını çalıştıran işlemden farklı olduğunda bu durum oluşabilir. Bazen bu sorun Visual Studio veya geliştirici komut istemi Yönetici olarak çalıştırılarak düzeltilebilir.

  • Yeterli dosya tutamacı yok. Bazı uygulamaları kapatın ve sonra yeniden derleyin. Bu normal koşullar altında olağandışı bir durumdur. Fiziksel belleğin sınırlı olduğu bir bilgisayarda büyük projeler oluşturulduğunda meydana gelebilir.

Örnek

Aşağıdaki örnek, üst bilgi dosyası "test.h" kaynak dizinde veya ekleme arama yolunda olmadığında bir C1083 hatası oluşturur.

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

IDE'de veya komut satırında C/C++ projeleri oluşturma ve ortam değişkenlerini ayarlama hakkında bilgi için bkz . Projeler ve derleme sistemleri.

Ayrıca bkz.