SORU
2 EYLÜL 2010, PERŞEMBE


DLL nedir ve nasıl çalışır?

Her zaman benim C DLL araştırıyorum# kodu, ama açıklığa kavuşturmak istediğim bir gizem biraz kaldılar. Bu sorular DLL ile ilgili beyin dökümü bir tür.

Bir DLL DOSYASı başka bir program almak için zamanında bu kütüphane erişim anlamına gelir dinamik olarak bağlı bir kütüphane olduğunu anlıyorum "işlevsellik". Ancak, Web.dll Business.dll ile aşağıdaki ASP.NET proje (Web.dll ön uç işlevselliği ve referanslar Business.dll türleri ve yöntemleri) göz önünde bulundurun.

  1. Hangi noktada Business.dll Web.dll dinamik bağlantı mı? Windows, Word (vb.) kullanırken HDD görünüşte küçük görevler için dayak çok dikkat edin ve bir Kelime kapalı ve dinamik olarak diğer DLL işlevini bağlama sanırım?

    1a. Ayrıca, DLL yükler link - OS yoksa bazıları gibi çerçeve çalıştırın .NET çerçeve?

    1b. Süreci nedir""? bağlama Uyumluluk kontrolleri yapılmış mı? Aynı belleğe yükleniyor? Bağlama aslında ne anlama geliyor?

  2. Aslında DLL kodu ne yürütür? İşlemci tarafından yürütülen veya orada işlemci DLL içindeki kod anlamak için önce çeviri ya da derleme bir başka aşaması mı?

    2a. Bir DLL C yerleşik durumda# .Bu çalışan ne olduğunu NET:.NET çerçeve ya da işletim sistemi doğrudan?

  3. Linux bir DLL dosyası Windows bir sistemde eğer böyle bir şey varsa () çalışır, ya da belirli bir işletim sistemi?

  4. DLL belirli bir çerçeve özgüdür? Bir DLL C kullanılarak inşa edebilir# .NET bir DLL inşa, örneğin, Borland C ile tarafından kullanılacak ?

    4a. 4 Eğer cevap "hayır" sonra bir DLL anlamı nedir? Neden çeşitli çerçeveler bağlantılı dosyalar için kendi biçimleri yok mu? Örneğin: bir .exe inşa edilmiş .NET bir dosya türü olduğunu bilir .abc koduna bağlanabilir.

  5. Web.dll / Business.dll örnek - müşteri ben bir sınıf türü olacak Web.dll Business.dll başvurmak gerekir. Bu Business.dll müşteri sınıf aslında ne gibi bir şartname çeşit içerir. Eğer olsaydı, derlenmiş benim Business.dll dosya içinde, diyelim ki, Delphi: C# anlamak ve mümkün oluşturmak için bir müşteri sınıfı, yoksa bir çeşit başlık bilgisi falan diyor ki, "Merhaba, kusura bakma. sadece benden başka bir Delphi DLL"?

    5a. Aynı yöntemleri için de geçerlidir; bir DLL DOSYASı CreateInvoice() bir yöntem yazmak, C derlemek ve C erişin çalıştırın miyim#? Ya da bunu yapmama ne engel tanır mı?

  6. DLL kaçırma konusunda, mutlaka yedek (kötü) DLL kesin yöntem gasp ediliyor, yani imzalar ve türleri içermelidir. Bu yöntem orijinal DLL mevcut idi ne öğrenebilirsen yapmak zor olmaz sanırım.

    6a. Ya benim C# programı eğer başka bir DLL erişim miyim? karar vermektir Kaçırılan DLL tam olarak orijinal olarak aynı yöntem ve türleri bulunan ama başka bir dilde derlenmiş olsaydı, işe yarar mıydı?

DLL alma ve DLL kayıt nedir?

CEVAP
2 EYLÜL 2010, PERŞEMBE


İşte, hataları işaret etmek çekinmeyin. Tam olarak Windows iç ile bir uzman değilim

Öncelikle, DLL farklı iki tür arasındaki farkı anlamak gerekir. Microsoft aynı dosya uzantıları ile gitmeye karar verdi (.exe ve .dll) ile hem de .NET (yönetilen kod) ve yerel kod, ancak kod DLL yönetilen ve yerel DLLçokiçinde farklı.

Hangi noktada 1) dinamik olarak link business.dll için web.dll mu? Sen Windows bir sürü HDD görünüşte küçük görevler için dayak haber ve bu Kelime gidiyor sanırım Word vb kullanarak ve dinamik bağlama işlevi diğer DLL?

1) durumunda .NET, DLL genellikle ilk yöntem DLL dosyasından bir şey erişmeye çalışıyor çalıştırıldığında, istek üzerine yüklenir. Bu eğer bir DLL DOSYASı yüklenebilir mi TypeNotFoundExceptions yere kodunuzu alabilirsiniz nedeni budur. Word gibi bir şey aniden sabit disk sürücüsünü bir sürü erişim başladığında, değiştirme olasılığı (disk için takas olmuştur, veri RAM'de yer açmak için alıyorum)

1a) ve Ayrıca DLL yükler bağlantıları - S/veya bazı bu gibi çalışma zamanı çerçeve .Net çerçeve?

1a) yönetilen DLL durumda .NET çerçeve yükler, JİT ne derler (derler .Yerel koda NET bayt) ve DLL bağlar. Yerel DLL ve DLL (derleme yerel DLL zaten yerel kod içeren, çünkü bu gereklidir) yükler bağlantılar bu işletim sisteminin bir bileşeni.

Süreci Nedir 1b)""? bağlama Çekler olduğunu yapılır uyumluluk? Aynı belleğe yükleniyor? Bağlama nedir aslında demek?

1b) Bağlama DLL semboller için arama kodu (örn yöntemleri) başvurular (örneğin, yöntem çağrıları) DLL şeylerin gerçek adresleri ile değiştirilir. Bu DLL dosyasına şeyler nihai adreslerini belleğe oldu önce bilinmesi için gereklidir.

2) aslında DLL kod çalıştırır? İdam olsun mu işlemci ya çeviri ya da derleme bir başka aşaması işlemci DLL içindeki kod anlayacaksınız önce?

2) Windows, .exe dosyaları ve .dll dosyaları oldukça benzer. Yerli .exe ve .dll dosyaları çevirmek için gerek yok bu yüzden yerel kod (işlemci çalıştırır aynı şeyler) içerir. Başardı .exe ve .dll dosyaları içerir .NET bayt kodu ilk JİT derlenmiş (yerel kod çevrildi).

2a) bir DLL C inşa Halinde# .bu çalışan ne kadar net? Bu .Net çerçeve ya da işletim sistemi doğrudan?

2a) kodu TAM zamanında derlenmiş Sonra, herhangi bir kod tam olarak aynı şekilde koştu.

3) demek bir DLL DOSYASı Linux işletim sistemi Windows (böyle bir şey üzerinde çalışmak var) veya işletim sistemine özgü?

3) Yönetilen DLL olarak, her iki platformda çerçeveler güncel olduğu sürece işe yarayabilir ve DLL yazan her kimse kasıtlı olarak yerli çağrıları kullanarak uyumluluk kırmadı. Yerli biçimlerinden farklı olarak DLL gibi değil, makine kodu içinde aynı işlemci platformu için onlar her ikisi de aynı olmasına karşın () çalışır. Linux üzerinde bu arada, "DLL" olarak bilinir .(shared object) dosyaları.

4) belirli bir çerçeve özgüdür? Bir DLL inşa kullanarak C# .Net bir DLL Borland ile inşa C (örnek) tarafından kullanılacak?

4) Yönetilen DLL için özellikle .NET çerçeve, ama onlar doğal olarak uyumlu herhangi bir dil ile çalışır. Yerel DLL uyumlu herkes aynı kuralları kullanır sürece (sözleşmeler fonksiyon argümanları makine kodu düzeyinde nasıl geçtiğini (), sembol adlandırma, vb arama)

5) web.dll / business.dll örnek. geri dönüyor Bir sınıf almak için ben müşteri tipi web.dll gelen business.dll başvuru gerekir. Bu business.dll bir tür belirtimi içeren bir anlamı olmalı müşteri bir sınıf aslında. Eğer benim business.dll derlenmiş olsaydı Delphi derdi dosyasını C# anlamak ve oluşturmak mümkün olacak - ya orada başlık bilgisi bir tür ya da bir müşteri sınıfı diyor ki "özür dilerim, sadece başka bir delphi dll beni kullanabilirsiniz".

5) Yönetilen DLL içerdikleri sınıf, yöntem, alan, her vs tam bir açıklama içerir. AFAIK Delphi desteklemiyor .Kullanılabilir olan yerel DLL, yaratacak çok NET .NET straightforwadly. Muhtemelen Pınvoke ile işlevleri çağırmak mümkün olacak, ama sınıf tanımları bulunamadı. DLL tip bilgileri nasıl depoladığını bilmiyorum Delphi kullanmıyorum. C , örneğin, başlık dayanır (.h) DLL tip bildirimleri içerir ve dağıtılması gereken dosyalar.

6) DLL kaçırma, (kötü) yerine DLL şüphesiz bu konuda kesin yöntem imzaları, türleri gibi içermelidir gasp ediliyor. Bu eğer bulabilirsen bunu yapmak zor olmaz sanırım vb orijinal DLL dosyası mevcut idi.

6) Gerçekten de zor değil eğer DLL kolayca geçiş yapabilirsiniz Eğer. Kod imzalama bunu önlemek için de kullanılabilir. Sırayla biri imzalı bir DLL değiştirmek için, gizli tutulan imzalama anahtarı, bilmek olurdu.

6a) tekrar bir soru biraz ama bu ne benim için gider C# programı eğer başka bir DLL erişim miyim? karar vermektir Kaçırılan DLL varsa tam olarak orijinal olarak aynı yöntem ve türleri bulunan ama iş miydi ki başka bir dili derlenmiş?

6a) yönetilen bir DLL olduğu sürece, herhangi bir ile yapılan bir iş .NET dili.

  • DLL alma nedir? ve dll kayıt?

"DLL alma" birçok şeyler, DLL DOSYASı başvuran ve bunları kullandığı anlamına gelir genelde.

DLL kayıt onları küresel sistem üzerinde herhangi bir yazılım için kullanılabilir hale getirmek için COM bileşenleri gibi DLL dosyalarını kaydetmek için Windows yapmadığı bir şey.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EmperorTigerstar

    EmperorTiger

    14 EYLÜL 2009
  • Matt Steffanina

    Matt Steffan

    1 EYLÜL 2011
  • Matthew Smith

    Matthew Smit

    24 Mayıs 2010