DLL hataları nasıl düzeltilir

Önünüzde bir sistem hatası penceresi belirdiğinde ve eksik bir DLL'den bahsettiğinde, hemen şu soru ortaya çıkar: DLL dosyası nedir? Neden ihtiyaç duyuluyor?

DLL dosyaları, genellikle çalıştıklarında uygulamalar tarafından çağrılan dinamik kitaplıklardır. DLL dosyaları, kod inceliklerini azaltmak ve genel performansı artırmak açısından önemli bir unsurdur.

Windows sistemlerini çalıştıran kişisel bilgisayarlar, genellikle bazı programları çalıştıramamaya neden olan DLL dosyası hatalarıyla karşılaşır. Belirli bir eksik .DLL dosyası olduğunu belirten hata mesajları görüntülenir. Sorun çözüldü çünkü yazılımın çalışmaya başlaması için o dosyayı internette bulmanız gerekiyor.

DLL dosyaları hakkında her şey

Kaç tane olduğu ve nasıl kullanıldığı nedeniyle, DLL dosyaları genellikle Windows'u başlatırken, kullanırken ve kapatırken görülen hataların önemli bir kısmının ana odak noktasıdır. Bununla birlikte, bir DLL dosyasını açmak nispeten nadirdir çünkü böyle bir dosyayı asla gerçekten düzenlememelisiniz ve kendisini düzenlemek muhtemelen programlar ve diğer DLL'lerle sorunlara neden olacaktır.

Bir DLL'deki kod, DLL'yi kullanan tüm işlemler tarafından paylaşılır. Başka bir deyişle, fiziksel bellekte tek bir konumu işgal ederler, ancak sayfa dosyası alanında değildirler. Konumsal önyargısız kod Windows'ta DLL'ler için kullanılmaz çünkü DLL'leri yüklemek için hazırlık belleği ana kursundaki boş alandaki tüm giriş noktası adreslerini sabitlemek için yüklenirken taşınır.

Windows'un eski sürümlerindeki DLL dosyaları

Çalışan her işlemin tek ve geniş bir problem çözme alanını işgal ettiği eski Windows sürümleri, tüm işlevlerin düzgün çalışması için DLL kodunun yalnızca bir kopyasına ihtiyaç duyuyordu.

İndirilen DLL'lerden belirli programların veya program kombinasyonlarının bu adreslere sahip olmadığını varsayalım. Daha sonra, benzersiz bir yeniden konumlandırılabilir girdi katsayıları seti uygulayarak DLL kodunun fazladan bir kopyasını yapmak gerekli olacaktır. Fiziksel belleğin geri yüklenmesi gerektiğinde, kullanılan kod bölümünde ve içeriğinde bir sıfırlama yapılmalı ve DLL dosyasından hızlı yeniden yüklemeler yapılmalıdır. GDI'nin tamamen farklı aygıt sürücülerini yüklemesine izin veren benzer bir mimari fikir, Windows'un diğer Windows paketlerini yüklemesine ve bu programların paylaşılan USER ve GDI kitaplıklarından API'leri çağırmasına izin verdi.

Bu nedenle, bir DLL dosyası şirketlere aynı anda birden fazla yardımcı program sağlayabilir. Bağımlı bir DLL daha modern bir sürüme yükseltilirse, eski bir sürümün üzerine yazılırsa veya bilgisayardan kaldırılırsa, DLL dosyası üzerinde bu sistem sayması gerektiği için çalışmayabilir. ActiveX Denetimleri, Denetim Masası kayıt verileri ve aygıt sürücüleri, Dinamik Bağlantı Kitaplıkları olarak Windows'un bazı bilgileridir.

DLL hatalarını düzeltmek için kanıtlanmış birkaç yöntem:

  • Windows Kaynak Koruma Aracı veya Sistem Dosyası Denetleyicisi'ni (SFC) kullanın.
  • Eksik veya bozuk DLL dosyalarını indirin ve sistem klasörüne koyun
  • Microsoft Visual C ++ Yeniden Dağıtılabilir'i Güncelleyin.
  • Microsoft .NET Framework'ü güncelleyin.
  • Sorunlu uygulamayı yeniden yükleyin.
  • Uygulamanın üreticisinden DLL dosyalarının bir kopyasını isteyin.

Biraz daha DLL dosyası bilgisi

Bağlı çalıştırılabilir dosyalar, derlendikleri aynı ayarda ve farklı ortamlarda çalıştırılırlarsa tam olarak tam zamanında çalıştırılırlarsa biraz daha erken yüklenirler, dolayısıyla herhangi bir dezavantajı yoktur. ithalatı bağlamak için. Bu arada, tüm olağan Windows amaçları, DLL'lerin 'ilgili Windows başlatma sistemlerine' eklenmiştir.

Bir uygulamanın içe aktarımlarını hedef çevresine bağlamak için mükemmel bir alternatif, yardımcı programın kurulum sürecindedir. Bununla birlikte, yürütülebilir dosyanın sağlama toplamını değiştirir, bu nedenle, dosyadaki sürümleri işlemek için sağlama toplamları kullanan bir yapılandırma yönetim yazılımı tarafından yönetilen imzalı programlar veya paketlerle gerçekleştirilebilecek bir şey değildir. Daha yeni Windows varyasyonları, yüklenen her kitaplık için bağlanmış adreslere sahip olmaktan uzaklaştıkça, bir yürütülebilir dosyayı bağlama fırsatı ve değeri azalmaktadır.

Çoğu Dinamik Bağlantı Kitaplığı .DLL dosya uzantısıyla biterken, diğerleri .OCX, .CPL veya .DRV kullanabilir. Belirli yürütülebilir paketleyiciler bir DLL'yi (ör. UPX) sıkıştırırsa, tüm kod bölümleri okuma ve yazma olarak işaretlenir ve paylaşılmayabilir. Herkese açık olmayan bilgi bölümleri gibi okuma ve yazma kod bölümleri her süreç için kişiseldir.

Bu nedenle, paylaşılan bilgi bölümleri olan DLL'ler, birden çok paket tarafından eşzamanlı olarak kullanılması amaçlanıyorsa sıkıştırılmamalıdır, çünkü her program örneği, DLL kopyasını taşımak zorunda kalacak ve bu da yüksek anı tüketimine yol açacaktır. Dinamik olarak yüklenmiş bir kitaplık kümesinden çalışma sistemini artırma fikri, Windows'un 2015'ten itibaren devam eden temel bir fikridir. DLL'ler, modülerliğe benzer şekilde paylaşılan kitaplıkların olağan avantajlarını sunar.