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

 
VBAG писал(а) >>

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?

Jeffrey Richter "Profesyoneller için Windows"

 
VBAG >> :

Hepinize sağlık diliyorum!

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

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


Yüklenmediğini nereden biliyorsun? DLLSample benim için harika çalışıyor.

 
HideYourRichess писал(а) >>

Yüklenmediğini nereden biliyorsun? DLLSample benim için harika çalışıyor.

Dolaylı olarak - siz terminali kapatana kadar dll dosyasının gövdesinin üzerine yazılmaz.

.

Doğru, küresel düzeyde bildirilen birkaç statik dizim var, belki bu etkiler.

.

Bu yüzden, projenin nasıl düzgün bir şekilde kurulacağını anlamak ve "dikkatlice" kaydettiği gibi ekle/ayır'ı kaydetmek istiyorum.

 

Teşekkürler, bir bakacağım.

 
VBAG >> :

Hepinize sağlık diliyorum!

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

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:

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?

Ne saldırısı? Ne detayı? Sen nesin? Normal bir dll'deki DllMain işlevi hiç gerekli değildir! Bağlayıcısı sizin yerinize dll-ku'ya ekler.

http://msdn.microsoft.com/en-us/library/2kzt1wy3(VS.80).aspx

/MD, /MT, /LD (Çalışma Zamanı Kitaplığını Kullan)


/LD

Bir DLL oluşturur.

/DLL seçeneğini bağlayıcıya iletir. Bağlayıcı bir DllMain işlevi arar, ancak gerektirmez. Bir DllMain işlevi yazmazsanız, bağlayıcı DOĞRU döndüren bir DllMain işlevi ekler.

DLL başlangıç kodunu bağlar.


http://msdn.microsoft.com/en-us/library/ms682583(VS.85).aspx

DllMain Geri Çağırma İşlevi

Dinamik bağlantı kitaplığına (DLL) isteğe bağlı bir giriş noktası
 
VBAG >> :

Dolaylı olarak - siz terminali kapatana kadar dll dosyasının gövdesinin üzerine yazılmaz.

.

Doğru, küresel düzeyde bildirilen birkaç statik dizim var, belki bu etkiler.


Yani aslında daha önce iddia ettiğiniz gibi bir DLLSample'ınız yok mu? böyle.

VBAG >> :

Bu yüzden, projenin nasıl düzgün bir şekilde kurulacağını anlamak ve "dikkatlice" kaydettiği gibi ekle/ayır'ı kaydetmek istiyorum.

 
HideYourRichess писал(а) >>

Yani aslında daha önce iddia ettiğiniz gibi bir DLLSample'ınız yok mu? böyle.

Eh, genel olarak, evet, açıkça DllMain kullanıyorsanız. Genel olarak tüm proje ayarları numuneden alınmalıdır. Mega alıntılar, DllMain'i açıkça kaydetmenizi önerir, ancak Delphi'de yazarsanız, orada DllMain'i kaydedemezsiniz, ancak tüm ekleme / ayırma işlemlerini başlatma ve sonlandırmaya koyabilirsiniz.

Global düzeyde iki statik dizi eklemem dışında, tüm proje DLLSample'dan alınmıştır.

Test cihazında başlatılan Expert Advisor'da ilkel bir işlev çağırıyorum. Testin sonunda DLL bellekte tutulur. İşte böyle bir durum.

 
VBAG >> :

Global düzeyde iki statik dizi eklemem dışında, tüm proje DLLSample'dan alınmıştır.

Test cihazında başlatılan Expert Advisor'da ilkel bir işlev çağırıyorum. Testin sonunda DLL bellekte tutulur. İşte böyle bir durum.

Aha, yani sorun test cihazında. Ve bu bir senaryo değil, bir gösterge değil, bir danışman. Peki bu Expert Advisor test cihazında değil normal şartlarda nasıl davranıyor?


Bu arada, "global düzeyde iki statik dizi", dll'yi hiçbir şekilde etkilememelidir. Özellikle de onlara dll'den erişmiyorsanız.


Güzel. Mesajımda, silmediğim halde yanıtladığınız metnin bir kısmı eksikti. Forum bomboş.

 
HideYourRichess >> :

Aha, yani sorun test cihazında. Ve bu bir senaryo değil, bir gösterge değil, bir danışman. Peki bu Expert Advisor test cihazında değil normal şartlarda nasıl davranıyor?

Aslında, bir yıl önce bir danışmanım varken dll ile tüm bu sorunları yaşadım.

test cihazımın çalışmasını sistem ile karşılaştırdım.

Ama ... eğri eller ve programdaki hatalar hakkında herkesi birkaç kez atlamayı başardı.

Allah kimseyi böyle patron etmesin :-(.

Not: VC 2005 çalışma zamanı kitaplıklarıyla bağlantılı dll: gösterge ve komut dosyasından sonra

her şey iyi yüklenir.

 
jartmailru >> :

Aslında, bir yıl önce bir danışmanım varken dll ile tüm bu sorunları yaşadım.

test cihazımın çalışmasını sistem ile karşılaştırdım.

Ama ... eğri eller ve programdaki hatalar hakkında herkesi birkaç kez atlamayı başardı.

Allah kimseyi böyle patron etmesin :-(.

Not: VC 2005 çalışma zamanı kitaplıklarıyla bağlantılı dll: gösterge ve komut dosyasından sonra

her şey iyi yüklenir.

Bir kez daha tekrar ediyorum - dll ile hiçbir yerde sorunum yok. Sorunlarınız varsa - o zaman bunlar programlamanızın sorunlarıdır, burada ne MS ne de MT'nin suçlanması muhtemel değildir. Ve "eski" VC'yi kullanmanız gerektiği gerçeği - bu yüzden yine de açık olmalıdır.