2010-01-30 11 views
6

Geçtiğimiz günlerde, sistemimde yüklü olan bir DLL'de, Dependancy Walker'ın (ve denediğim diğer tüm yardımcı programların) adında veya sırasına göre sıfır ihracata sahip olduğunu, ancak dosyanın boyutunun yaklaşık 4mb olduğunu söyledim. Bir DLL'nin tek amacının, diğer kodlar tarafından kullanılmak üzere fonksiyonlar ihraç etmek olduğunu düşündüğümde, görünür bir ihracatın olmadığı bir dll'nin amacı ne olurdu?Nasıl bir DLL sıfır ihracat yapabilir?

cevap

4

Bir DLL düşünmenin bir yolu, işlevler için bir kapsayıcıdır. Bir DLL'den bir işlevi dışa aktarma, bu işlevleri DLL dışındaki arayanlara görünür kılar. Bir DLL'den işlev aktarımı, bunlara erişim sağlamak için belki de en yaygın yol olsa da, birçok platform, .NET Framework ve Java'da yansıması ve (bence) LoadLibtary/GetProcAddress gibi dışa aktarılmayan işlevlere erişmek için başka yollar sağlar. o işlevler harici uygulamalar

+0

Oh, bu mantıklı. Hiç farketmedim (veya hatta düşündüm) eğer yazdıysanız, ihracat tablosundan başka bir DLL kullanmanın yolları olabilir. –

3

Kaynak okunur DLL çağrılabilir için bir kütüphanede işlevlere sahiptir için geliştirici faydalıdır ancak istenmeyen çünkü Win32

bunu yapmanın

Nedenleri çeşitlidir genellikle öyle, belki? Bunlar, örneğin, yerelleştirme amaçları için sıklıkla kullanılır.

DÜZENLEME: DllMain() içinde bir şekilde işlevini kullanılabilir hale getirmek için bir şeyler yapan bir DLL koduna sahip olmak da mümkündür. DLL, örneğin, bazı küresel dağıtıcı ile kayıt olabilir veya adlandırılmış çekirdek nesneleri oluştur ...