dll nasıl kaldırılır - sayfa 5

 
TheXpert >> :

1. dolgu sorusu - sistem, dll'yi hangi işlemlerden kaldıracağını nasıl biliyor?

Doldurma için 2. soru, dll'yi indirmeden giriş noktasını nasıl bulacağınızdır?


Şimdi konuya. Dll, doğru kayıt için regsvr işleminde yüklenir ve kaldırılır. Ve elbette, bu, diğer süreçlerden boşaltılmasını etkilemez.

Olduğunuzdan daha aptal olmaya çalışmayın. Hala bir artı olmasına rağmen - manayı okuyabilirsiniz.

Bu apaçık. Dll'yi boşaltmaya ek olarak, gösterge (uzman) başlatmasızlaştırma uygulaması bununla doğrudan ilgili herhangi bir şey içerebilir, bu da dll'nin yetkisiz olarak serbest bırakılmasını bir hack'e dönüştürür ve bu da terminalin doğru çalışmasını garanti etmez.


Toplam - bir deve olmadığınızı kanıtlamak için artık başarılı olmayacaksınız, iyi şanslar, daha fazla şişirin.

2Hepsi: adminlere götürmek için kafanıza takmayın.

ANCAK? Ne?

Anlayan biri lütfen bunu insan diline çevirsin.

(hayır, daha önce bir hata yaptım, TheExpert MetaQuotes gibi bir şirketin çalışanı olamaz, sadece cevaplarımdan biri çok çabuk silindi).

 
AlexEro >> :
Hacker amca, sözlerinde mantık yok: eğer kütüphane HER ZAMAN kendi kendine boşaltılıyorsa, o zaman neden FreeLibrary'ye "benim" çağrım sana göre "çoğu durumda çalışmayacak"? deinit () bloğundaki FreeLibrary'ye yapılan fazladan bir çağrının ne zararı olabilir? Belki de FreeLibrary'ye () yapılan çağrı, sizce kitaplığın yayınlanmasını bir şekilde engeller, ya da ne? Tutarsızlık, havalı hacker amca ve bariz.

Anlamak zor değil. Eğer dll beklendiği gibi yüklenmemişse, o zaman elleriniz çarpık ve dll kodunda (ve büyük olasılıkla DllMain'de veya gizli açılımlarda) bir hata yaptınız. Tek sebep bu, hem Windows hem de terminal dll'ye son derece sadık olduğundan, başkaları yok. Şimdi MT4 geliştiricilerinin küstah yöneticilerin oyuncu ellerinden sakladığı FreeLibrary hakkında. Dll kodu doğruysa, bu işlevi çağırmak gerekli değildir ve bu arada, her şey kendi kendine boşaltıldığı için bu, terminal belgelerinden anlaşılabilir. Ancak, sizin durumunuzda olduğu gibi kod yanlışsa, FreeLibrary bir kilitlenmeye neden olabilir ve/veya terminali çökertebilir. Lütfen FreeLibrary'nin hatalı durumlarda boşaltmayı garanti etmediğini unutmayın. Bazen FreeLibrary yardımcı olabilir ve bazen işleri daha da kötüleştirebilir. Bu bir piyangodur, bu nedenle bu durumda bu işlevin kullanılması önerilmez. Ve yetkili kod yazmanız önerilir. Tabii ki, bunu yapamıyorsanız, dll'nizin çok az yardımı olur. Böylece.


Aslına bakarsanız, bu zaten burada defalarca söylendi, belki gerçekten başka bir forum aptalı gibi davranmayı bırakırsınız.

 
HideYourRichess >> :

Anlamak zor değil. Eğer dll beklendiği gibi yüklenmemişse, o zaman elleriniz çarpık ve dll kodunda (ve büyük olasılıkla DllMain'de veya gizli açılımlarda) bir hata yaptınız. Tek sebep bu, hem Windows hem de terminal dll'ye son derece sadık olduğundan, başkaları yok. Şimdi MT4 geliştiricilerinin küstah yöneticilerin oyuncu ellerinden sakladığı FreeLibrary hakkında. Dll kodu doğruysa, bu işlevi çağırmak gerekli değildir ve bu arada, her şey kendi kendine boşaltıldığı için bu, terminal belgelerinden anlaşılabilir. Ancak, sizin durumunuzda olduğu gibi kod yanlışsa, FreeLibrary bir kilitlenmeye neden olabilir ve/veya terminali çökertebilir. Lütfen FreeLibrary'nin hatalı durumlarda boşaltmayı garanti etmediğini unutmayın. Bazen FreeLibrary yardımcı olabilir ve bazen işleri daha da kötüleştirebilir. Bu bir piyangodur, bu nedenle bu durumda bu işlevin kullanılması önerilmez. Ve yetkili kod yazmanız önerilir. Tabii ki, bunu yapamıyorsanız, dll'nizin çok az yardımı olur. Böylece.


Aslına bakarsanız, bu zaten burada defalarca söylendi, belki gerçekten başka bir forum aptalı gibi davranmayı bırakırsınız.

Hacker amca, genellikle böyle bir anda (büyük uzun mesafeli şirketlerde bile) "orada ne içiyorsun?" diye sormak zaten adettir, ama ben daha kibarca soracağım:

Hacker amca, Mark Twain'in "Tarım gazetesini nasıl düzenlerim" hikayesini okudun mu? Okudun mu? Orada, bir gazete editörü, İsveçlinin ne olduğunu bilmeden ağaçlardan İsveçli toplama hakkında yazıyor.

 

Hadi ama, bu aynı ucuz numara, Mark Twain gibi "yetkilileri" kendi tarafına "çekmeye" çalışmak.


Prensipte bir dll'nin ne olduğunu ve nasıl çalıştığını anlamadığınızı kabul edin.


Burada belirsiz olan nedir? kötü bir yönetici ve kötü bir dll yazarı mısınız?

 
HideYourRichess >> :

Hadi ama, bu aynı ucuz numara, Mark Twain gibi "yetkilileri" kendi tarafına "çekmeye" çalışmak.


Prensipte bir dll'nin ne olduğunu ve nasıl çalıştığını anlamadığınızı kabul edin.


Nasılmış? Evet ama hacker amca, Microsoft'un kendisi bile bunu bilmiyor ve/veya nasıl çözüleceğini bilmiyor! Profesyoneller arasında buna "DLL HELL" denir. Duymadın mı? İşte wikipedia'dan bir bağlantı:

https://en.wikipedia.org/wiki/Dll_hell

Microsoft'tan da dahil olmak üzere sonunda hala bir sürü bağlantı var.

Amca, bu forumda her şeyin nasıl çalıştığını ve her şeyi nasıl çözeceğini BİLEN BİR KİŞİ ile neredeyse tanıştığımı fark etmekten memnunum.

 

Dll Hell eski ve iyi bilinen bir problemdir ve bunu kullanıcı seviyesinde çözmenin yolları iyi bilinmektedir.


Ancak bu sorunun terminalle nasıl ilişkili olduğunu açıklamaya çalışın?


Bu wiki'ye göz gezdirdiğinize ancak sorunun özünü anlamadığınıza dair bir şüphem var. Her ihtimale karşı, size hatırlatmama izin verin: "Sorunun özü, belirli işlevleri desteklemek için tasarlanmış DLL sürümlerinin çakışmasında yatmaktadır. DLL cehennemi , gizli bir mayın gibi keskin bir sonuca yol açan kötü bir programlama kavramının bir örneğidir. sistemin karmaşıklığında ve iyileştirilmesinde artış." (Ruslar tartışmamızı takip ettiği için açıklamayı Rusça wiki'den aldım).


Peki Dll Hell'in terminalle ilişkisi nedir? ve ayrıca, regsvr32 veya FreeLibrary bu soruna nasıl yardımcı olabilir?

 
HideYourRichess >> :

Dll Hell eski ve iyi bilinen bir problemdir ve bunu kullanıcı seviyesinde çözmenin yolları iyi bilinmektedir.


Ancak bu sorunun terminalle nasıl ilişkili olduğunu açıklamaya çalışın?


Bu wiki'ye göz gezdirdiğinize ancak sorunun özünü anlamadığınıza dair bir şüphem var.


Peki Dll Hell'in terminalle ilişkisi nedir? ve ayrıca, regsvr32 veya FreeLibrary bu soruna nasıl yardımcı olabilir?

Yine, genel ifadeler ve hiçbir ayrıntı yok, bir kin. DLL Hell doğrudan sorunla ilgili değildir, yalnızca DLL hakkında her şeyi bildiğinizi, orada sorun olmadığını ve aptal olmayan herkesin DLL ile HERHANGİ bir sorundan kaçınabileceğini ifade etmenize atıfta bulunur. Bu konudaki diğer soruları alıntılar ve bağlantılar ile cevapladım. Senin aksine.

 
AlexEro >> :

Yine, genel ifadeler ve hiçbir ayrıntı yok, bir kin. DLL Hell doğrudan sorunla ilgili değildir, yalnızca DLL hakkında her şeyi bildiğinizi, orada sorun olmadığını ve aptal olmayan herkesin DLL ile HERHANGİ bir sorundan kaçınabileceğini ifade etmenize atıfta bulunur. Bu konudaki diğer soruları alıntılar ve bağlantılar ile cevapladım. Senin aksine.

Alındın mı?! Dur, benden bir örnek al, muhatabı küçük düşürmeye yönelik küçük, ucuz girişimlerinize dikkat etmiyorum.


Ve dll'de, hangi komisyona basmamanız gerektiğini biliyorsanız, gerçekten karmaşık bir şey yoktur, özellikle megakotaların sunduğu uygulamada kolaydır.


Bir dll ile ilgili sorunlardan kaçınmanın tek yolunun o dll'yi doğru yazmak olduğunu kabul etmek istemiyorsunuz, bu aptalca. Burada hangi bağlantılara ihtiyacınız olduğunu anlamak imkansız.

 

Kişisel deneyimime göre, dinamik kitaplıklarla ilgili herhangi bir sorun yok (delphi ve c++ ile yazarken). Benim için, onları kullanan göstergeleri kapattıktan hemen sonra serbest bırakıldılar. Göstergenin hızlı bir şekilde kapatılması + dll'nin değiştirilmesi her zaman işe yaradı.

FreeLibrary'yi sadece kodum _not_ açıkça LoadLibrary'yi çağırdığı için kullanmazdım - Diğer insanların hatalarını düzeltmeyeceğim (eğer bunlar tekrarlanabilirlerse ve benim kodumla ilgili değilse - geliştiricilere söylemesi daha kolay).

Tartışılan sorunun üçüncü taraf kodunun (windows veya mt) yanlış çalışmasının sonucu olduğu konusunda büyük şüphelerim var.

 

Hepinize sağlık diliyorum!

Konu beni ilgilendirdi ve tartışılan konuyu terminalle birlikte gelen basit bir örnek kullanarak kontrol etmeye karar verdim (DLLSample projesi ).

VS 6.0'da derlendikten sonra, pişmiş dll terminal ile başarılı bir şekilde çalışır, ancak kendini boşaltmaz!

İşte ana işlevi:

 BOOL APIENTRY DllMain ( HANDLE hModule , DWORD ul_reason_for_call , LPVOID lpReserved )
   {
//----
   switch ( ul_reason_for_call )
     {
       case DLL_PROCESS_ATTACH :
       case DLL_THREAD_ATTACH :
       case DLL_THREAD_DETACH :
       case DLL_PROCESS_DETACH :
         break ;
     }
//----
   return ( TRUE ) ;
   }

Ve şimdi soru, bir dll'nin Windows altında nasıl çalıştığını gerçekten anlayan ve onu VS 6.0 altındaki bir projede (örneğin) doğru bir şekilde nasıl derleyeceğini bilen uzmanlar içindir.

Ana fonksiyon prototipi doğru seçilmiş mi?

ATTACH/DETACH akışları nasıl yönetilir?

Bu konuda nerede okumalı ve örneklerle arzu edilir mi?