come scaricare la dll - pagina 11

 
AlexEro >> :

Immagino che non si tratti necessariamente del tester MT. Se il tester MT ha in qualche modo un ciclo LoadLibrary all'inizio ... FreeLibrary alla fine, e questo ciclo viene eseguito molte volte, allora Windows bloccherà semplicemente la DLL in memoria fino a tempi migliori e non penserà a fare nulla per liberarla, ma solo a imitarla. Questo viene fatto in Windows per memorizzare nella cache le librerie usate di frequente.


Potete supporre tutto quello che volete, ma i risultati di un semplice esperimento mostrano che la dll è scaricata dal tester. Perché tutte queste finzioni, non è chiaro. Se non chiudete il tester, allora sì, la dll si blocca, ma quando chiudete il tester, viene liberata. Almeno nel mio caso è così.

 
HideYourRichess >> :

Si può supporre qualsiasi cosa, ma i risultati di un semplice esperimento mostrano che la dll è scaricata dal tester. Non capisco perché tutte queste invenzioni. Se non si chiude il tester, allora sì, la dll si blocca, ma quando si chiude il tester, viene liberata. Almeno per me è così.


Oh, ho avuto un pensiero spaventoso - forse HideYourRichess è il dipendente di MetaQuotes, che ha scritto quel blocco di DLL da caricare in MT4? Allora non ci sono più domande. Se funziona per lui, DEVE funzionare per gli altri.

 
Una teoria di cospirazione degli sviluppatori di MT contro i poveri programmatori è in ordine.
 

E ho controllato io stesso - in questo caso particolare, una semplice DLL jartmailru è tenuta dal tester. Lo tiene molto stretto, il mio girino, e non lo lascia entrare, demonio. Il che è comunque normale e comprensibile.

Process Explorer (con il plugin) ovviamente lo scarica comunque - tramite hard unload.

Unlocker 1.8.7 non funziona affatto (?).

A proposito, se la libreria utilizza COM+ 2.0, e anche multithreaded (che è complesso, come ho detto prima), allora Microsoft indica un ritardo di 10 MINUTI per il suo / loro scarico reale, anche se stiamo parlando di un'altra funzione di rilascio:


CoFreeUnusedLibraries non rilascia immediatamente le DLL che non hanno un oggetto attivo. C'è un ritardo di dieci minuti per gli appartamenti multithreaded (MTA) e gli appartamenti neutri (NA). Per gli appartamenti a thread singolo (STA), non c'è ritardo. Il ritardo di dieci minuti per CoFreeUnusedLibraries è per evitare condizioni di corsa multithread causate dallo scarico di una DLL componente.

http://support.microsoft.com/kb/301357

 
HideYourRichess >> :

Credo volentieri che qualcosa non funzioni lì, ma non ho eseguito la tua dll sospetta. Sono troppo pigro per compilare dal tuo VC8.0 a VC6.0. Sono anche troppo pigro per controllare le versioni dei crt che usate per la compatibilità. Puoi vedere nel solito proiettore che hai una dll che si collega a msvcr80, ma l'esempio usa msvcrt. Una piccola cosa, ma non bella. Ecc.

Solo questo fatto è irrilevante, signor Slippery.

Con lo script - tutto viene scaricato.

Ops... si è imbarazzato di nuovo :-).

Ma va bene così.

Ora è relativo:

HideYourRichess >> :

Si può supporre qualsiasi cosa, ma i risultati di un semplice esperimento mostrano che la dll del tester è scarica. Perché tutte queste finzioni, non capisco. Se non si chiude il tester, la dll si blocca, ma dopo aver chiuso il tester viene liberata. Almeno io ho così.

Ecco fatto.

L'uomo ha raggiunto i test.

Benvenuti nel mondo reale!

.

Controllato la chiusura del pannello del tester.

Quindi, quante cose intelligenti sono programmate in MetaTrader!

Vero, senza tener conto del ciclo di sviluppo di queste stesse Dll - ma sono le piccole cose.

Ma è più facile chiudere l'intera MetaTrader in funzione :-).

.

La cosa più importante: non dovete presentare la chiusura del pannello del tester come un fatto e un argomento ovvio,

Anche se il tuo talento come ricercatore nei casi in cui hai bisogno di "abbattere" il tuo avversario,

che senza dubbio avete. Quanti subordinati diresti di avere al momento?

.

La frase nell'originale dovrebbe suonare così:

Il tester manterrà la Dll fino alla chiusura della metatrader.

a meno che tu non faccia una mossa non ovvia e chiuda il pannello del tester :-).

.

In conclusione: se non chiudete il pannello del tester con la vostra Dll, ha dei bug come tutti gli altri! :-P

 

Process Explorer (con il plugin) naturalmente lo scarica ancora anche con il tester - da hard unload.

Riavviare il tester dopo aver scaricato la DLL tramite PrExpl - nessun problema. Cioè, personalmente, preferirei classificare questo inconveniente (chiamiamolo così) come un glitch da tester, piuttosto che una caratteristica. Le persone serie creeranno la loro DLL in una finestra diversa, perché dovrebbero saltare intorno a diverse finestre, chiuderle, aprirle?

 
AlexEro >> :

E ho controllato io stesso - in questo caso particolare, una semplice DLL di jartmailru è tenuta dal tester. Il tester lo tiene molto stretto e non lo lascia entrare, demonio. Ma è normale e comprensibile.


Di chi è la colpa? Penso che sia colpa del programmatore. Perché un'altra dll, di un altro programmatore, non lo fa.

 
HideYourRichess >> :

>> Di chi è la colpa? >> Penso che sia un programmatore disonesto.

Cosa vuoi dire, zio? È tenuto da MT - MQ's Tester, che non lo scarica da FreeLibrary. Perché cagate sulla vostra azienda? Hai scritto tu stesso questo bug e ora ce lo chiedi sul forum?

 

(con voce da bambino, come nei film dei pionieri di Stalin degli anni 1940-1950)

Ragazzi, aiutiamo MetaQuotes! Sarà più facile per noi scrivere programmi MQL4! Diciamo al programmatore principale di MetaQuotes, chiamato HideYourRichess, come le DLL sono installate, caricate, scaricate ed eseguite! Andiamo? А?! L'ho messo ai voti. Chi è a favore, alzi la mano e il servizio di messaggistica di Windows.

 

Idiota.